public AssemblyDetailsViewModel(AssemblyViewModel parent)
            : base(parent)
        {
            _assembly        = Node.Assembly;
            _projectAssembly = Node.ProjectAssembly;
            _projectSign     = _projectAssembly.Sign;

            _filePath       = _projectAssembly.FilePath;
            _outputFilePath = _filePath;

            UpdateOutputFilePath();

            if (File.Exists(_filePath))
            {
                var fileInfo = new FileInfo(_filePath);
                _createdDate      = fileInfo.CreationTime;
                _lastModifiedDate = fileInfo.LastWriteTime;
                _fileSize         = fileInfo.Length;
            }

            _changeInputCommand       = new DelegateCommand(ChangeInput);
            _changeOutputCommand      = new DelegateCommand(ChangeOutput);
            _signBrowseKeyFileCommand = new DelegateCommand(SignBrowseForKeyFile);

            Load();
        }
        internal void Read(IBinaryAccessor accessor, ProjectReadState state)
        {
            _filePath   = ProjectHelper.MakeAbsolutePath(state.GetString(accessor.Read7BitEncodedInt()), state.BasePath);
            _outputPath = ProjectHelper.MakeAbsolutePath(state.GetString(accessor.Read7BitEncodedInt()), state.BasePath);
            _flags      = accessor.ReadInt32();
            _flags2     = accessor.ReadInt32();
            _flags3     = accessor.ReadInt32();

            if (NameChanged)
            {
                _name = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (CultureChanged)
            {
                _culture = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (VersionChanged)
            {
                _version = new Version(accessor.ReadUInt16(), accessor.ReadUInt16(), accessor.ReadUInt16(), accessor.ReadUInt16());
            }

            if (TitleChanged)
            {
                _title = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (DescriptionChanged)
            {
                _description = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (CompanyChanged)
            {
                _company = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (ProductChanged)
            {
                _product = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (CopyrightChanged)
            {
                _copyright = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (TrademarkChanged)
            {
                _trademark = state.GetString(accessor.Read7BitEncodedInt());
            }

            if (accessor.ReadBoolean())
            {
                _sign = new ProjectAssemblySign(accessor, state);
            }

            ReadModules(accessor, state);
            ReadResources(accessor, state);
        }