private List <INamedTypeSymbol> ReloadAllClasses(DothtmlCompletionContext context)
 {
     return(allClasses.GetOrRetrieve(() =>
     {
         var syntaxTrees = CompletionHelper.GetSyntaxTrees(context);
         var ownSymbols = syntaxTrees.SelectMany(t => t.Tree.GetRoot().DescendantNodes().OfType <ClassDeclarationSyntax>()
                                                 .Select(c => t.SemanticModel.GetDeclaredSymbol(c))).ToList();
         var referencedSymbols = CompletionHelper.GetReferencedSymbols(context);
         return Enumerable.Concat(referencedSymbols, ownSymbols).OfType <INamedTypeSymbol>()
         .Where(c => c.DeclaredAccessibility == Accessibility.Public && !c.IsAbstract)
         .ToList();
     }));
 }