public SevenZipFileObject(IFileName name, uint index, SevenZipFileSystem fs, bool fileExists)
            : base(name, fs)
        {
            this.fs = fs;
            this.Index = index;

            if (!fileExists)
            {
                type = FileType.IMAGINARY;
            }
        }
        protected override IFileSystem doCreateFileSystem(String scheme, IFileObject file, FileSystemOptions fileSystemOptions)
        {
            if(!formatMap.ContainsKey(scheme))
            {
                throw new FileSystemException(String.Format("Unknown file system scheme: {0}", scheme));
            }

            IInArchive archive = sevenZip.CreateInArchive(SevenZipFormat.GetClassIdFromKnownFormat(formatMap[scheme]));
            if(archive == null)
            {
                throw new FileSystemException("This 7-zip library does not support this archive type.");
            }

            IFileName rootName = new LayeredFileName(scheme, file.Name, FileName_Fields.ROOT_PATH, FileType.FOLDER);

            SevenZipFileSystem fs = new SevenZipFileSystem(archive, rootName, file, fileSystemOptions);
            foreach (IFileSystemListener listener in defaultListeners)
            {
                fs.addListener(listener);
            }

            return fs;
        }
            public ArchiveOpenCallback(SevenZipFileSystem fileSystem, IFileObject parent, FileInfo archiveFile)
            {
                this.fileSystem = fileSystem;
                this.parent = parent;
                this.archiveFile = archiveFile;

                this.streams = new List<Stream>();
            }