private static bool ShouldNameArguments(SyntaxNodeAnalysisContext context, ArgumentListSyntax argumentListSyntax)
        {
            if (argumentListSyntax.Arguments.Count < 4)
            {
                return(false);
            }

            if (argumentListSyntax.IsInExpressionTree(context.SemanticModel, context.CancellationToken))
            {
                return(false);
            }

            if (context.SemanticModel.GetSymbolSafe(argumentListSyntax.Parent, context.CancellationToken) is IMethodSymbol method)
            {
                if (method.ContainingType == KnownSymbol.String ||
                    method.ContainingType.IsAssignableTo(KnownSymbol.Tuple, context.Compilation) ||
                    method.ContainingType == KnownSymbol.DependencyProperty)
                {
                    return(false);
                }

                if (method.Parameters.TryFirst(x => x.IsParams, out _))
                {
                    return(false);
                }

                foreach (var member in method.ContainingType.GetMembers(method.Name))
                {
                    if (member is IMethodSymbol overload &&
                        overload.Parameters.TryFirst(x => x.IsParams, out _))
                    {
                        return(false);
                    }
                }

                if (!HasAdjacentParametersOfSameType(method.Parameters))
                {
                    return(false);
                }

                var lineNumber = argumentListSyntax.OpenParenToken.FileLinePositionSpan(context.CancellationToken).StartLinePosition.Line;
                foreach (var argument in argumentListSyntax.Arguments)
                {
                    var ln = argument.FileLinePositionSpan(context.CancellationToken).StartLinePosition.Line;
                    if (ln == lineNumber)
                    {
                        return(false);
                    }

                    lineNumber = ln;
                    if (argument.NameColon == null)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }