public static void AnalyzeTypeParameterList(SyntaxNodeAnalysisContext context)
        {
            var typeParameterList = (TypeParameterListSyntax)context.Node;

            SeparatedSyntaxList <TypeParameterSyntax> typeParameters = typeParameterList.Parameters;

            if (!typeParameters.Any())
            {
                return;
            }

            SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses = GetConstraintClauses(typeParameterList.Parent);

            if (!constraintClauses.Any())
            {
                return;
            }

            if (constraintClauses.SpanContainsDirectives())
            {
                return;
            }

            if (!IsFixable(typeParameters, constraintClauses))
            {
                return;
            }

            context.ReportDiagnostic(
                DiagnosticDescriptors.ReorderTypeParameterConstraints,
                constraintClauses.First());
        }