private bool IsContainerSection(BinaryReader reader, RWSectionHeader header, RWSection parent)
 {
     reader.BaseStream.Seek(header.StartPos, SeekOrigin.Begin);
       if (header.Size > HeaderSize)
       {
     RWSectionHeader newHeader = new RWSectionHeader();
     newHeader.LoadFromStream(reader);
     if ((newHeader.Version == header.Version) && (newHeader.Size < header.Size))
     {
       reader.BaseStream.Seek(header.StartPos, SeekOrigin.Begin);
       return true;
     }
       }
       reader.BaseStream.Seek(header.StartPos + header.Size, SeekOrigin.Begin);
       return false;
 }
 private RWSection LoadSection(BinaryReader reader, RWSection parentSection)
 {
     RWSectionHeader header = new RWSectionHeader();
       header.LoadFromStream(reader);
       RWSection section = this.GetFactory(header, parentSection).GetSection(reader, header);
       if ((section is UnknownSection) && IsContainerSection(reader, header, parentSection))
     section = (new RWSectionFactory<ContainerSection>() as IRWSectionFactory).GetSection(reader, header);
       return section;
 }