/// <summary>
        /// Checks if the active project has changed
        /// </summary>
        /// <param name="oldActiveProject">The file name of the old active project</param>
        private void CheckActiveProjectChange(string oldActiveProject)
        {
            _lastCollectedActiveProject = ActiveProject?.Root?.FileName;
            if (oldActiveProject == _lastCollectedActiveProject) return;

            var oldProject = Projects.FirstOrDefault(p => p.Root.FileName == oldActiveProject);
            var newProject = Projects.FirstOrDefault(p => p.Root.FileName == _lastCollectedActiveProject);
            ActiveProjectChanged?.Invoke(this, 
                new ActiveProjectChangedEventArgs(oldProject, newProject));
            if (newProject == null) return;

            SpectNetPackage.Log($"New active project: {newProject.Root.FileName}");
        }
        /// <summary>
        /// Compiles the program code
        /// </summary>
        /// <returns>True, if compilation successful; otherwise, false</returns>
        public async Task <bool> CompileCode()
        {
            var start = DateTime.Now;

            SpectNetPackage.Log(_compiler.ServiceName);
            var output = await _compiler.CompileDocument(_itemFullPath, PrepareAssemblerOptions());

            var duration = (DateTime.Now - start).TotalMilliseconds;

            SpectNetPackage.Log($"Compile time: {duration}ms");
            var compiled = output != null;

            if (compiled)
            {
                // --- Sign that compilation was successful
                HostPackage.DebugInfoProvider.CompiledOutput = Output = output;
                CreateCompilationListFile(_hierarchy, _itemId);
            }
            HostPackage.CodeManager.RaiseCompilationCompleted(output);
            return(compiled);
        }