/*^
 #pragma warning disable 2674, 2666
 ^*/
 internal PEFileReader(
   PeReader moduleReadWriteFactory,
   IBinaryDocumentMemoryBlock binaryDocumentMemoryBlock
 ) {
   this.ErrorContainer = new MetadataErrorContainer(moduleReadWriteFactory, binaryDocumentMemoryBlock.BinaryDocument);
   this.ReaderState = ReaderState.Initialized;
   this.BinaryDocumentMemoryBlock = binaryDocumentMemoryBlock;
   if (!this.ReadPEFileLevelData())
     return;
   if (!this.ReadCORModuleLevelData())
     return;
   if (!this.ReadMetadataLevelData())
     return;
   //  TODO: Add phase for Metadata validation of offsets type row ids etc...
 }
 internal PEFileReader(PeReader moduleReadWriteFactory, IBinaryDocumentMemoryBlock binaryDocumentMemoryBlock, bool snapshot = false) {
   this.ErrorContainer = new MetadataErrorContainer(moduleReadWriteFactory, binaryDocumentMemoryBlock.BinaryDocument);
   this.ReaderState = ReaderState.Initialized;
   this.BinaryDocumentMemoryBlock = binaryDocumentMemoryBlock;
   if (!snapshot) {
     if (!this.ReadPEFileLevelData()) return;
     if (!this.ReadCORModuleLevelData()) return;
   } else {
     this.SectionHeaders = new SectionHeader[0];
     if (!this.ReadMetadataRoot()) return;
   }
   if (!this.ReadMetadataLevelData()) return;
   //  TODO: Add phase for Metadata validation of offsets type row ids etc...
 }