private void InternalRead(BinaryReader reader)
        {
            mHeader     = reader.ReadStructure <CvmDirectoryListingHeader>(CvmDirectoryListingHeader.SIZE);
            mSubEntries = new CvmDirectoryListingEntry[mHeader.entryCount];

            for (int i = 0; i < mHeader.entryCount; i++)
            {
                mSubEntries[i] = new CvmDirectoryListingEntry(reader, this);
            }

            reader.AlignPosition(16);

            for (int i = 0; i < mHeader.entryCount; i++)
            {
                if (i > 1 && mSubEntries[i].Flags.HasFlagUnchecked(RecordFlags.DirectoryRecord))
                {
                    mSubEntries[i].DirectoryListing = new CvmDirectoryListing(reader, mSubEntries[i]);
                }
            }
        }
 internal CvmDirectoryListing(BinaryReader reader, CvmDirectoryListingEntry originEntry)
 {
     mOriginEntry = originEntry;
     InternalRead(reader);
 }