public virtual TypeStyleResult AnalyzeTypeName(
            TypeSyntax typeName, SemanticModel semanticModel,
            OptionSet optionSet, CancellationToken cancellationToken)
        {
            var declaration = typeName?.FirstAncestorOrSelf <SyntaxNode>(
                a => a.IsKind(SyntaxKind.DeclarationExpression, SyntaxKind.VariableDeclaration, SyntaxKind.ForEachStatement));

            if (declaration == null)
            {
                return(default);
        private static bool IsAlreadyContainedInNamespace(
            TypeSyntax typeSyntax,
            ITypeSymbol typeSymbol,
            SemanticModel semanticModel)
        {
            NamespaceDeclarationSyntax namespaceDeclaration = typeSyntax.FirstAncestorOrSelf <NamespaceDeclarationSyntax>();

            if (namespaceDeclaration != null)
            {
                INamespaceSymbol namespaceSymbol = semanticModel.GetDeclaredSymbol(namespaceDeclaration);
                if (namespaceSymbol != null)
                {
                    return(namespaceSymbol
                           .ContainingNamespacesAndSelf()
                           .Any(f => string.Equals(f.ToString(), typeSymbol.ContainingNamespace.ToString(), StringComparison.Ordinal)));
                }
            }

            return(false);
        }