/// <summary>
        /// Initializes a new instance of the <see cref="CompilationContext"/> class.
        /// </summary>
        public CompilationContext(Workspace workspace, Document currentDocument)
        {
            Workspace = workspace;
            CurrentDocument = currentDocument;

            DocumentEditor = DocumentEditor.CreateAsync(currentDocument).Result;
        }
 private Task<Document> MakeSealed(DocumentEditor editor, SyntaxNode declaration, CancellationToken ct)
 {
     DeclarationModifiers modifiers = editor.Generator.GetModifiers(declaration);
     editor.SetModifiers(declaration, modifiers + DeclarationModifiers.Sealed);
     return Task.FromResult(editor.GetChangedDocument());
 }
 private static void IncreaseVisibility(DocumentEditor editor, SyntaxNode declaration, Accessibility targetAccessibility)
 {
     if (declaration == null) return;
     ISymbol symbol = editor.SemanticModel.GetDeclaredSymbol(declaration);
     var property = (symbol as IMethodSymbol)?.AssociatedSymbol as IPropertySymbol;
     if (property != null && IsMoreRestrictive(property.DeclaredAccessibility, targetAccessibility))
     {
         // Can't explicitly set an accessor to a visibility greater than or equal to that of the containing property
         editor.SetAccessibility(declaration, Accessibility.NotApplicable);
     }
     else
     {
         editor.SetAccessibility(declaration, targetAccessibility);
     }
 }