public ClassMetadata ReadClassMetadata(ClassMetadata classMetadata, IReflectClass
                                        clazz)
 {
     if (classMetadata == null)
     {
         throw new ArgumentNullException();
     }
     if (!classMetadata.StateUnread())
     {
         return(classMetadata);
     }
     _classMetadataCreationDepth++;
     try
     {
         classMetadata.ResolveNameConfigAndReflector(this, clazz);
         IReflectClass claxx = classMetadata.ClassReflector();
         if (claxx != null)
         {
             _classMetadataByClass.Put(claxx, classMetadata);
             classMetadata.ReadThis();
             classMetadata.CheckChanges();
             _initClassMetadataOnUp.Add(classMetadata);
         }
     }
     finally
     {
         _classMetadataCreationDepth--;
     }
     InitClassMetadataOnUp();
     return(classMetadata);
 }
 internal void ReReadClassMetadata(ClassMetadata clazz)
 {
     if (clazz != null)
     {
         ReReadClassMetadata(clazz._ancestor);
         clazz.ReadName(_systemTransaction);
         clazz.ForceRead();
         clazz.SetStateClean();
         clazz.BitFalse(Const4.CheckedChanges);
         clazz.BitFalse(Const4.Reading);
         clazz.BitFalse(Const4.Continue);
         clazz.BitFalse(Const4.Dead);
         clazz.CheckChanges();
     }
 }