using Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax; namespace Microsoft.CodeAnalysis.CSharp.Syntax; public sealed class AttributeArgumentSyntax : CSharpSyntaxNode { private NameEqualsSyntax? nameEquals; private NameColonSyntax? nameColon; private ExpressionSyntax? expression; public NameEqualsSyntax? NameEquals => ((SyntaxNode)this).GetRedAtZero(ref nameEquals); public NameColonSyntax? NameColon => ((SyntaxNode)this).GetRed(ref nameColon, 1); public ExpressionSyntax Expression => ((SyntaxNode)this).GetRed(ref expression, 2); internal AttributeArgumentSyntax(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode green, SyntaxNode? parent, int position) : base((GreenNode)(object)green, parent, position) { } internal override SyntaxNode? GetNodeSlot(int index) { return (SyntaxNode?)(index switch { 0 => ((SyntaxNode)this).GetRedAtZero(ref nameEquals), 1 => ((SyntaxNode)this).GetRed(ref nameColon, 1), 2 => ((SyntaxNode)this).GetRed(ref expression, 2), _ => null, }); } internal override SyntaxNode? GetCachedSlot(int index) { return (SyntaxNode?)(index switch { 0 => nameEquals, 1 => nameColon, 2 => expression, _ => null, }); } public override void Accept(CSharpSyntaxVisitor visitor) { visitor.VisitAttributeArgument(this); } public override TResult? Accept(CSharpSyntaxVisitor visitor) { return visitor.VisitAttributeArgument(this); } public AttributeArgumentSyntax Update(NameEqualsSyntax? nameEquals, NameColonSyntax? nameColon, ExpressionSyntax expression) { if (nameEquals != NameEquals || nameColon != NameColon || expression != Expression) { AttributeArgumentSyntax attributeArgumentSyntax = SyntaxFactory.AttributeArgument(nameEquals, nameColon, expression); SyntaxAnnotation[] annotations = ((SyntaxNode)this).GetAnnotations(); if (annotations == null || annotations.Length == 0) { return attributeArgumentSyntax; } return attributeArgumentSyntax.WithAnnotations(annotations); } return this; } public AttributeArgumentSyntax WithNameEquals(NameEqualsSyntax? nameEquals) { return Update(nameEquals, NameColon, Expression); } public AttributeArgumentSyntax WithNameColon(NameColonSyntax? nameColon) { return Update(NameEquals, nameColon, Expression); } public AttributeArgumentSyntax WithExpression(ExpressionSyntax expression) { return Update(NameEquals, NameColon, expression); } }