internal FileInfoRarFilePart(MarkHeader mh, FileHeader fh, FileInfo fi)
     : base(mh, fh, true)
 {
     FileInfo = fi;
 }
 internal override RarFilePart CreateFilePart(FileHeader fileHeader, MarkHeader markHeader)
 {
     return new SeekableStreamFilePart(markHeader, fileHeader, Stream, streamOwner);
 }
 internal abstract RarFilePart CreateFilePart(FileHeader fileHeader, MarkHeader markHeader);
 internal NonSeekableStreamFilePart(MarkHeader mh, FileHeader fh, bool streamOwner)
     : base(mh, fh, streamOwner)
 {
 }
 internal override RarFilePart CreateFilePart(FileHeader fileHeader, MarkHeader markHeader)
 {
     return new FileInfoRarFilePart(markHeader, fileHeader, FileInfo);
 }
 internal SeekableStreamFilePart(MarkHeader mh, FileHeader fh, Stream stream, bool streamOwner)
     : base(mh, fh, streamOwner)
 {
     Stream = stream;
 }
 protected RarFilePart(MarkHeader mh, FileHeader fh, bool streamOwner)
 {
     MarkHeader = mh;
     FileHeader = fh;
     StreamOwner = streamOwner;
 }