Index: CompilerServices/MethodImplementation.cs
===================================================================
--- CompilerServices/MethodImplementation.cs	(revision 1141)
+++ CompilerServices/MethodImplementation.cs	(working copy)
@@ -68,6 +68,13 @@
             return base.GetGenericMethodParameter(index);
         }
 
+		public override void Initialize(BinaryReader reader)
+		{
+			base.Initialize(reader);
+			
+			_genericArguments = null;
+		}
+
         #endregion // Methods
     }
 }
Index: Metadata/GenericParameter.cs
===================================================================
--- Metadata/GenericParameter.cs	(revision 1141)
+++ Metadata/GenericParameter.cs	(working copy)
@@ -107,6 +107,7 @@
             _attributes = (GenericParamAttributes)reader.ReadUInt16();
             _owner = (TokenTypes)_metadataProvider.ReadIndexValue(reader, IndexType.TypeOrMethodDef);
             _nameIdx = _metadataProvider.ReadIndexValue(reader, IndexType.StringHeap);
+			_name = null;
         }
 
         #endregion // Methods
Index: Metadata/MemberReference.cs
===================================================================
--- Metadata/MemberReference.cs	(revision 1141)
+++ Metadata/MemberReference.cs	(working copy)
@@ -66,6 +66,7 @@
             _classIdx = _metadataProvider.ReadIndexValue(reader, IndexType.MemberRefParent);
             _nameIdx = _metadataProvider.ReadIndexValue(reader, IndexType.StringHeap);
             _signatureIdx = _metadataProvider.ReadIndexValue(reader, IndexType.BlobHeap);
+			_name = null;
         }
 
         /// <summary>
Index: Metadata/MethodDefinition.cs
===================================================================
--- Metadata/MethodDefinition.cs	(revision 1141)
+++ Metadata/MethodDefinition.cs	(working copy)
@@ -233,6 +233,8 @@
             _nameIdx = _metadataProvider.ReadIndexValue(reader, IndexType.StringHeap);
             _signatureIdx = _metadataProvider.ReadIndexValue(reader, IndexType.BlobHeap);
             _firstParamIdx = (TokenTypes)_metadataProvider.ReadIndexValue(reader, TokenTypes.Param);
+			_name = null;
+			_params = null;
 
             // Find all generic parameters for this method
             _genericParameters = SignatureReader.ReadGenericParameters(_metadataProvider, _token);
Index: Metadata/Parameter.cs
===================================================================
--- Metadata/Parameter.cs	(revision 1141)
+++ Metadata/Parameter.cs	(working copy)
@@ -112,6 +112,7 @@
 			_attributes = (ParameterAttributes)reader.ReadUInt16();
 			_sequence = reader.ReadUInt16();
             _nameIdx = _metadataProvider.ReadIndexValue(reader, IndexType.StringHeap);
+			_name = null;
 		}
 
 		#endregion // Methods
Index: Metadata/TypeDefinition.cs
===================================================================
--- Metadata/TypeDefinition.cs	(revision 1141)
+++ Metadata/TypeDefinition.cs	(working copy)
@@ -90,6 +90,10 @@
             _baseTypeIdx = (TokenTypes)_metadataProvider.ReadIndexValue(reader, IndexType.TypeDefOrRef);
             _fields = (TokenTypes)_metadataProvider.ReadIndexValue(reader, TokenTypes.Field);
             _methods = (TokenTypes)_metadataProvider.ReadIndexValue(reader, TokenTypes.MethodDef);
+			_name = null;
+			_namespace = null;
+			_baseType = null;
+			_stackType = StackTypeCode.Unknown;
 
             _genericParameters = SignatureReader.ReadGenericParameters(_metadataProvider, this.Token);
             Debug.Assert(-1 == this.Name.IndexOf('`') || _genericParameters.Length != 0, @"Failed to retrieve generic parameters.");
Index: Metadata/TypeReference.cs
===================================================================
--- Metadata/TypeReference.cs	(revision 1141)
+++ Metadata/TypeReference.cs	(working copy)
@@ -28,7 +28,7 @@
 		/// <summary>
 		/// The namespace of the type.
 		/// </summary>
-		private string _namespace;
+		protected string _namespace;
 
         /// <summary>
         /// The metadata index of the namespace.
@@ -38,7 +38,7 @@
 		/// <summary>
 		/// The name of the type.
 		/// </summary>
-        private string _name;
+        protected string _name;
 
         /// <summary>
         /// The metadata index of the type name.
@@ -298,9 +298,12 @@
             _scopeIdx = (TokenTypes)_metadataProvider.ReadIndexValue(reader, IndexType.ResolutionScope);
             _nameIdx = _metadataProvider.ReadIndexValue(reader, IndexType.StringHeap);
             _namespaceIdx = _metadataProvider.ReadIndexValue(reader, IndexType.StringHeap);
+			_name = null;
+			_namespace = null;
+			_stackType = StackTypeCode.Unknown;
 
             _genericParameters = SignatureReader.ReadGenericParameters(_metadataProvider, _token);
-        }
+		}
 
         /// <summary>
         /// Returns the size of a single row in the given heap.
