private AttributeArgumentSyntax GetAttributeArgumentNodeToBeReplaced(SyntaxNode root, TextSpan diagnosticSpan) { SyntaxNode node = root?.FindNode(diagnosticSpan); return(node switch { LiteralExpressionSyntax literal when literal.Kind() == SyntaxKind.NumericLiteralExpression && literal.Token.Value is int => literal.Parent <AttributeArgumentSyntax>(), IdentifierNameSyntax namedConstant => namedConstant.Parent <AttributeArgumentSyntax>(), MemberAccessExpressionSyntax memberAccess => memberAccess.Parent <AttributeArgumentSyntax>(), AttributeArgumentSyntax attributeArgument => attributeArgument, AttributeSyntax attribute => SearchForAttributeArgumentToBeReplaced(attribute), _ => null, });