Enforce that Ident and Lifetime are well formed
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 9f4f9cb..4ca3dde 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -400,6 +400,16 @@
 
 }
 
+pub fn fold_ident<V: Folder + ?Sized>(_visitor: &mut V, mut _i: Ident) -> Ident {
+    _i.span = _visitor.fold_span(_i.span);
+    _i
+}
+
+pub fn fold_lifetime<V: Folder + ?Sized>(_visitor: &mut V, mut _i: Lifetime) -> Lifetime {
+    _i.span = _visitor.fold_span(_i.span);
+    _i
+}
+
 
 pub fn fold_abi<V: Folder + ?Sized>(_visitor: &mut V, _i: Abi) -> Abi {
     Abi {
@@ -1568,13 +1578,6 @@
         where_clause: (_i . where_clause).map(|it| { _visitor.fold_where_clause(it) }),
     }
 }
-
-pub fn fold_ident<V: Folder + ?Sized>(_visitor: &mut V, _i: Ident) -> Ident {
-    Ident {
-        sym: _i . sym,
-        span: _visitor.fold_span(_i . span),
-    }
-}
 # [ cfg ( feature = "full" ) ]
 pub fn fold_impl_item<V: Folder + ?Sized>(_visitor: &mut V, _i: ImplItem) -> ImplItem {
     use ::ImplItem::*;
@@ -1960,13 +1963,6 @@
     }
 }
 
-pub fn fold_lifetime<V: Folder + ?Sized>(_visitor: &mut V, _i: Lifetime) -> Lifetime {
-    Lifetime {
-        sym: _i . sym,
-        span: _visitor.fold_span(_i . span),
-    }
-}
-
 pub fn fold_lifetime_def<V: Folder + ?Sized>(_visitor: &mut V, _i: LifetimeDef) -> LifetimeDef {
     LifetimeDef {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
diff --git a/src/ident.rs b/src/ident.rs
index 5d85b48..f93fb43 100644
--- a/src/ident.rs
+++ b/src/ident.rs
@@ -87,7 +87,7 @@
 /// ```
 #[derive(Copy, Clone, Debug)]
 pub struct Ident {
-    pub sym: Term,
+    sym: Term,
     pub span: Span,
 }
 
diff --git a/src/lifetime.rs b/src/lifetime.rs
index bfa59fd..44359de 100644
--- a/src/lifetime.rs
+++ b/src/lifetime.rs
@@ -8,7 +8,7 @@
 #[cfg_attr(feature = "extra-traits", derive(Debug))]
 #[cfg_attr(feature = "clone-impls", derive(Clone))]
 pub struct Lifetime {
-    pub sym: Term,
+    sym: Term,
     pub span: Span,
 }