string GetName(SyntaxNode node)
            {
                if (tag is SyntaxTree)
                {
                    var type = node;
                    if (type != null)
                    {
                        var sb = StringBuilderCache.Allocate();
                        sb.Append(ext.GetEntityMarkup(type));
                        while (type.Parent is BaseTypeDeclarationSyntax)
                        {
                            sb.Insert(0, ext.GetEntityMarkup(type.Parent) + ".");
                            type = type.Parent;
                        }
                        return(StringBuilderCache.ReturnAndFree(sb));
                    }
                }
                if (node is AccessorDeclarationSyntax accessor)
                {
                    if (accessor.Kind() == SyntaxKind.GetAccessorDeclaration)
                    {
                        return("get");
                    }
                    if (accessor.Kind() == SyntaxKind.SetAccessorDeclaration)
                    {
                        return("set");
                    }
                    if (accessor.Kind() == SyntaxKind.AddAccessorDeclaration)
                    {
                        return("add");
                    }
                    if (accessor.Kind() == SyntaxKind.RemoveAccessorDeclaration)
                    {
                        return("remove");
                    }
                    return(node.ToString());
                }
                if (node is OperatorDeclarationSyntax)
                {
                    return("operator");
                }
                if (node is PropertyDeclarationSyntax)
                {
                    return(((PropertyDeclarationSyntax)node).Identifier.ToString());
                }
                if (node is MethodDeclarationSyntax)
                {
                    return(((MethodDeclarationSyntax)node).Identifier.ToString());
                }
                if (node is ConstructorDeclarationSyntax)
                {
                    return(((ConstructorDeclarationSyntax)node).Identifier.ToString());
                }
                if (node is DestructorDeclarationSyntax)
                {
                    return(((DestructorDeclarationSyntax)node).Identifier.ToString());
                }
                if (node is BaseTypeDeclarationSyntax)
                {
                    return(((BaseTypeDeclarationSyntax)node).Identifier.ToString());
                }

                //				if (node is fixeds) {
                //					return ((FixedVariableInitializer)node).Name;
                //				}
                if (node is VariableDeclaratorSyntax)
                {
                    return(((VariableDeclaratorSyntax)node).Identifier.ToString());
                }
                return(node.ToString());
            }