private static void Analyze(SyntaxNodeAnalysisContext context, SeparatedSyntaxList <ArgumentSyntax> arguments)
        {
            ArgumentSyntax        previousParameter  = arguments[1];
            int                   firstParameterLine = arguments[0].GetLine();
            int                   previousLine       = previousParameter.GetLine();
            Func <int, int, bool> lineCondition;

            if (firstParameterLine == previousLine)
            {
                // arguments must be on same line
                lineCondition = (param1Line, param2Line) => param1Line == param2Line;
            }
            else
            {
                // each argument must be on its own line
                lineCondition = (param1Line, param2Line) => param1Line != param2Line;
            }

            for (int i = 2; i < arguments.Count; ++i)
            {
                ArgumentSyntax currentParameter = arguments[i];
                int            currentLine      = currentParameter.GetLine();

                if (lineCondition(previousLine, currentLine))
                {
                    previousLine = currentLine;
                    continue;
                }

                context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
                return;
            }
        }