diff --git a/pmd-java/etc/grammar/Java.jjt b/pmd-java/etc/grammar/Java.jjt index e6ceba6d90..0dc3919471 100644 --- a/pmd-java/etc/grammar/Java.jjt +++ b/pmd-java/etc/grammar/Java.jjt @@ -2283,7 +2283,6 @@ void LocalTypeDecl() #void: { // waiting for the next node to open. We want that node to be the type declaration, // not the wrapper statement node. ( ClassOrInterfaceDeclaration() - | AnnotationTypeDeclaration() | LOOKAHEAD({isKeyword("record")}) RecordDeclaration() | LOOKAHEAD({isKeyword("enum")}) EnumDeclaration() ) { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java index 0ee445909c..01ea87ea58 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16PreviewTreeDumpTest.java @@ -4,6 +4,7 @@ package net.sourceforge.pmd.lang.java.ast; +import org.junit.Assert; import org.junit.Test; import net.sourceforge.pmd.lang.ast.ParseException; @@ -12,6 +13,11 @@ import net.sourceforge.pmd.lang.ast.test.BaseTreeDumpTest; import net.sourceforge.pmd.lang.ast.test.RelevantAttributePrinter; import net.sourceforge.pmd.lang.java.JavaParsingHelper; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + public class Java16PreviewTreeDumpTest extends BaseTreeDumpTest { private final JavaParsingHelper java16p = JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("16-preview") @@ -35,11 +41,21 @@ public class Java16PreviewTreeDumpTest extends BaseTreeDumpTest { @Test public void sealedClass() { doTest("geometry/Shape"); + + ASTCompilationUnit compilationUnit = java16p.parseResource("geometry/Shape.java"); + ASTClassOrInterfaceDeclaration sealedClass = compilationUnit.descendants(ASTClassOrInterfaceDeclaration.class).first(); + Assert.assertEquals(new HashSet<>(Arrays.asList(JModifier.SEALED, JModifier.PUBLIC)), + sealedClass.getModifiers().getExplicitModifiers()); } @Test public void nonSealedClass() { doTest("geometry/Square"); + + ASTCompilationUnit compilationUnit = java16p.parseResource("geometry/Square.java"); + ASTClassOrInterfaceDeclaration sealedClass = compilationUnit.descendants(ASTClassOrInterfaceDeclaration.class).first(); + Assert.assertEquals(new HashSet<>(Arrays.asList(JModifier.NON_SEALED, JModifier.PUBLIC)), + sealedClass.getModifiers().getExplicitModifiers()); } @Test(expected = ParseException.class) @@ -50,5 +66,10 @@ public class Java16PreviewTreeDumpTest extends BaseTreeDumpTest { @Test public void sealedInterface() { doTest("expression/Expr"); + + ASTCompilationUnit compilationUnit = java16p.parseResource("expression/Expr.java"); + ASTClassOrInterfaceDeclaration sealedClass = compilationUnit.descendants(ASTClassOrInterfaceDeclaration.class).first(); + Assert.assertEquals(new HashSet<>(Arrays.asList(JModifier.SEALED, JModifier.PUBLIC)), + sealedClass.getModifiers().getExplicitModifiers()); } } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java index ca809cc0e7..c745d8465d 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/Java16TreeDumpTest.java @@ -6,6 +6,8 @@ package net.sourceforge.pmd.lang.java.ast; import java.util.List; +import net.sourceforge.pmd.lang.java.symbols.JElementSymbol; +import net.sourceforge.pmd.lang.java.types.JPrimitiveType; import org.junit.Assert; import org.junit.Test; @@ -78,12 +80,14 @@ public class Java16TreeDumpTest extends BaseTreeDumpTest { // extended tests for type resolution etc. ASTCompilationUnit compilationUnit = java16.parseResource("Point.java"); - ASTRecordDeclaration recordDecl = compilationUnit.getFirstDescendantOfType(ASTRecordDeclaration.class); - List components = recordDecl.getFirstChildOfType(ASTRecordComponentList.class) - .findChildrenOfType(ASTRecordComponent.class); - Assert.assertNull(components.get(0).getVarId().getNameDeclaration().getAccessNodeParent()); - Assert.assertEquals(Integer.TYPE, components.get(0).getVarId().getNameDeclaration().getType()); - Assert.assertEquals("int", components.get(0).getVarId().getNameDeclaration().getTypeImage()); + ASTRecordDeclaration recordDecl = compilationUnit.descendants(ASTRecordDeclaration.class).first(); + List components = recordDecl.descendants(ASTRecordComponentList.class) + .children(ASTRecordComponent.class).toList(); + + ASTVariableDeclaratorId varId = components.get(0).getVarId(); + JElementSymbol symbol = varId.getSymbol(); + Assert.assertEquals("x", symbol.getSimpleName()); + Assert.assertTrue(varId.getTypeMirror().isPrimitive(JPrimitiveType.PrimitiveTypeKind.INT)); } @Test(expected = ParseException.class) diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/LocalInterfacesAndEnums.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/LocalInterfacesAndEnums.txt index 040472c0ac..29f6076142 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/LocalInterfacesAndEnums.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/LocalInterfacesAndEnums.txt @@ -3,7 +3,7 @@ +- ModifierList[@EffectiveModifiers = "{public}", @ExplicitModifiers = "{public}"] +- ClassOrInterfaceBody[@Size = "1"] +- Initializer[@Static = "false"] - +- Block[@Size = "4", @containsComment = "false"] + +- Block[@Size = "3", @containsComment = "true"] +- LocalClassStatement[] | +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalInterfacesAndEnums$1MyLocalClass", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "false", @Interface = "false", @Local = "true", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Record = "false", @RegularClass = "true", @SimpleName = "MyLocalClass", @TopLevel = "false", @Visibility = "local"] | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/PatternMatchingInstanceof.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/PatternMatchingInstanceof.txt index 9e182201e9..a17cd22307 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/PatternMatchingInstanceof.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/PatternMatchingInstanceof.txt @@ -23,10 +23,10 @@ | | +- InfixExpression[@CompileTimeConstant = "false", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | +- PatternExpression[@CompileTimeConstant = "false", @ParenthesisDepth = "0", @Parenthesized = "false"] - | | | +- TypePattern[] + | | | +- TypePattern[@EffectiveVisibility = "package", @Visibility = "package"] + | | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"] | | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"] - | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "true", @Visibility = "local"] - | | | +- ModifierList[@EffectiveModifiers = "{final}", @ExplicitModifiers = "{}"] + | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"] | | +- Block[@Size = "1", @containsComment = "true"] | | | +- ExpressionStatement[] | | | +- MethodCall[@CompileTimeConstant = "false", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] @@ -56,10 +56,10 @@ | | | +- InfixExpression[@CompileTimeConstant = "false", @Operator = "instanceof", @ParenthesisDepth = "1", @Parenthesized = "true"] | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | +- PatternExpression[@CompileTimeConstant = "false", @ParenthesisDepth = "0", @Parenthesized = "false"] - | | | +- TypePattern[] + | | | +- TypePattern[@EffectiveVisibility = "package", @Visibility = "package"] + | | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"] | | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"] - | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "true", @Visibility = "local"] - | | | +- ModifierList[@EffectiveModifiers = "{final}", @ExplicitModifiers = "{}"] + | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"] | | +- Block[@Size = "1", @containsComment = "true"] | | | +- ExpressionStatement[] | | | +- MethodCall[@CompileTimeConstant = "false", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] @@ -89,10 +89,10 @@ | | | +- InfixExpression[@CompileTimeConstant = "false", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | | +- PatternExpression[@CompileTimeConstant = "false", @ParenthesisDepth = "0", @Parenthesized = "false"] - | | | | +- TypePattern[] + | | | | +- TypePattern[@EffectiveVisibility = "package", @Visibility = "package"] + | | | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"] | | | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"] - | | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "true", @Visibility = "local"] - | | | | +- ModifierList[@EffectiveModifiers = "{final}", @ExplicitModifiers = "{}"] + | | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"] | | | +- InfixExpression[@CompileTimeConstant = "false", @Operator = ">", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | +- MethodCall[@CompileTimeConstant = "false", @Image = "length", @MethodName = "length", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] @@ -115,10 +115,10 @@ | | +- InfixExpression[@CompileTimeConstant = "false", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | +- PatternExpression[@CompileTimeConstant = "false", @ParenthesisDepth = "0", @Parenthesized = "false"] - | | | +- TypePattern[] + | | | +- TypePattern[@EffectiveVisibility = "package", @Visibility = "package"] + | | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"] | | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"] - | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "true", @Visibility = "local"] - | | | +- ModifierList[@EffectiveModifiers = "{final}", @ExplicitModifiers = "{}"] + | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"] | | +- InfixExpression[@CompileTimeConstant = "false", @Operator = ">", @ParenthesisDepth = "0", @Parenthesized = "false"] | | +- MethodCall[@CompileTimeConstant = "false", @Image = "length", @MethodName = "length", @ParenthesisDepth = "0", @Parenthesized = "false"] | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.java b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.java index 9a756d70c1..27223d19b6 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.java +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.java @@ -45,7 +45,9 @@ public class Records { public record VarRec(@Nullable @Deprecated String @Nullable ... x) {} - public record ArrayRec(int x[]) {} + // note: Java 15 Preview allowed c-style arrays "public record ArrayRec(int x[]) {}" + // but PMD doesn't + public record ArrayRec(int[] x) {} public record EmptyRec() { public void foo() { } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.txt index 9dd37674bb..f4aa3093ff 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java15p/Records.txt @@ -148,10 +148,11 @@ | +- RecordComponentList[@Size = "1", @Varargs = "false"] | | +- RecordComponent[@EffectiveVisibility = "private", @Varargs = "false", @Visibility = "private"] | | +- ModifierList[@EffectiveModifiers = "{private, final}", @ExplicitModifiers = "{}"] - | | +- PrimitiveType[@Kind = "int"] + | | +- ArrayType[@ArrayDepth = "1"] + | | | +- PrimitiveType[@Kind = "int"] + | | | +- ArrayDimensions[@Size = "1"] + | | | +- ArrayTypeDim[@Varargs = "false"] | | +- VariableDeclaratorId[@ArrayType = "true", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "x", @PatternBinding = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "private"] - | | +- ArrayDimensions[@Size = "1"] - | | +- ArrayTypeDim[@Varargs = "false"] | +- RecordBody[@Size = "0"] +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$EmptyRec", @CanonicalName = "Records.EmptyRec", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Interface = "false", @Local = "false", @Nested = "true", @PackageName = "", @Record = "true", @RegularClass = "false", @SimpleName = "EmptyRec", @TopLevel = "false", @Visibility = "public"] | +- ModifierList[@EffectiveModifiers = "{public, static, final}", @ExplicitModifiers = "{public}"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/LocalClassAndInterfaceDeclarations.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/LocalClassAndInterfaceDeclarations.txt new file mode 100644 index 0000000000..9d9e74af58 --- /dev/null +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/LocalClassAndInterfaceDeclarations.txt @@ -0,0 +1,37 @@ ++- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = "true"] + +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalClassAndInterfaceDeclarations", @CanonicalName = "LocalClassAndInterfaceDeclarations", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "LocalClassAndInterfaceDeclarations", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "LocalClassAndInterfaceDeclarations", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- ClassOrInterfaceBody[@Size = "1"] + +- Initializer[@Static = "false"] + +- Block[@Size = "3", @containsComment = "true"] + +- LocalClassStatement[] + | +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalClassAndInterfaceDeclarations$1MyLocalClass", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "false", @Image = "MyLocalClass", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "false", @RegularClass = "true", @SimpleName = "MyLocalClass", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceBody[@Size = "3"] + | +- FieldDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "true", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "true", @Transient = "false", @VariableName = "constantField", @Visibility = "package", @Volatile = "false"] + | | +- ModifierList[] + | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | +- VariableDeclarator[@Initializer = "true", @Name = "constantField"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "true", @Final = "true", @FormalParameter = "false", @Image = "constantField", @LambdaParameter = "false", @LocalVariable = "false", @Name = "constantField", @Native = "false", @PackagePrivate = "true", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "true", @Transient = "false", @TypeInferred = "false", @VariableName = "constantField", @Visibility = "package", @Volatile = "false"] + | | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "1", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "1.0", @ValueAsFloat = "1.0", @ValueAsInt = "1", @ValueAsLong = "1"] + | +- FieldDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "true", @Transient = "false", @VariableName = "staticField", @Visibility = "package", @Volatile = "false"] + | | +- ModifierList[] + | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | +- VariableDeclarator[@Initializer = "false", @Name = "staticField"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "true", @Final = "false", @FormalParameter = "false", @Image = "staticField", @LambdaParameter = "false", @LocalVariable = "false", @Name = "staticField", @Native = "false", @PackagePrivate = "true", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "true", @Transient = "false", @TypeInferred = "false", @VariableName = "staticField", @Visibility = "package", @Volatile = "false"] + | +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "local", @Final = "false", @Image = "staticMethod", @MethodName = "staticMethod", @Name = "staticMethod", @Native = "false", @Overridden = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "true", @Transient = "false", @Varargs = "false", @Visibility = "package", @Void = "true", @Volatile = "false"] + | +- ModifierList[] + | +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + | +- FormalParameters[@Size = "0"] + | +- Block[@Size = "0", @containsComment = "false"] + +- LocalClassStatement[] + | +- ClassOrInterfaceDeclaration[@Abstract = "true", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalClassAndInterfaceDeclarations$1MyLocalInterface", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "false", @Image = "MyLocalInterface", @Interface = "true", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "false", @RegularClass = "false", @SimpleName = "MyLocalInterface", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceBody[@Size = "0"] + +- LocalClassStatement[] + +- EnumDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalClassAndInterfaceDeclarations$1MyLocalEnum", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "true", @Final = "true", @Image = "MyLocalEnum", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "false", @RegularClass = "false", @SimpleName = "MyLocalEnum", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + +- ModifierList[] + +- EnumBody[@SeparatorSemi = "false", @Size = "1", @TrailingComma = "false"] + +- EnumConstant[@Abstract = "false", @AnonymousClass = "false", @EffectiveVisibility = "local", @Final = "true", @Image = "A", @MethodName = "new", @Name = "A", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "true", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "A", @LambdaParameter = "false", @LocalVariable = "false", @Name = "A", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "true", @VariableName = "A", @Visibility = "public", @Volatile = "false"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/LocalRecords.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/LocalRecords.txt new file mode 100644 index 0000000000..5700a87b79 --- /dev/null +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/LocalRecords.txt @@ -0,0 +1,194 @@ ++- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = "true"] + +- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.util.stream.Collectors", @ImportedSimpleName = "Collectors", @PackageName = "java.util.stream", @Static = "false"] + +- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.util.List", @ImportedSimpleName = "List", @PackageName = "java.util", @Static = "false"] + +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords", @CanonicalName = "LocalRecords", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "LocalRecords", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "LocalRecords", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- ClassOrInterfaceBody[@Size = "6"] + +- ClassOrInterfaceDeclaration[@Abstract = "true", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords$Merchant", @CanonicalName = "LocalRecords.Merchant", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "Merchant", @Interface = "true", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "false", @SimpleName = "Merchant", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceBody[@Size = "0"] + +- MethodDeclaration[@Abstract = "false", @Arity = "2", @EffectiveVisibility = "public", @Final = "false", @Image = "computeSales", @MethodName = "computeSales", @Name = "computeSales", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "true", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "false", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "double", @PrimitiveType = "true", @TypeImage = "double"] + | +- FormalParameters[@Size = "2"] + | | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Merchant", @TypeImage = "Merchant"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "merchant", @LambdaParameter = "false", @LocalVariable = "false", @Name = "merchant", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "merchant", @Visibility = "local", @Volatile = "false"] + | | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "month", @LambdaParameter = "false", @LocalVariable = "false", @Name = "month", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "month", @Visibility = "local", @Volatile = "false"] + | +- Block[@Size = "1", @containsComment = "false"] + | +- ReturnStatement[] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "month", @Name = "month", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- MethodDeclaration[@Abstract = "false", @Arity = "2", @EffectiveVisibility = "package", @Final = "false", @Image = "findTopMerchants", @MethodName = "findTopMerchants", @Name = "findTopMerchants", @Native = "false", @Overridden = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "package", @Void = "false", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "List", @TypeImage = "List"] + | | +- TypeArguments[@Diamond = "false", @Size = "1"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Merchant", @TypeImage = "Merchant"] + | +- FormalParameters[@Size = "2"] + | | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "List", @TypeImage = "List"] + | | | | +- TypeArguments[@Diamond = "false", @Size = "1"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Merchant", @TypeImage = "Merchant"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "merchants", @LambdaParameter = "false", @LocalVariable = "false", @Name = "merchants", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "merchants", @Visibility = "local", @Volatile = "false"] + | | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "month", @LambdaParameter = "false", @LocalVariable = "false", @Name = "month", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "month", @Visibility = "local", @Volatile = "false"] + | +- Block[@Size = "2", @containsComment = "false"] + | +- LocalClassStatement[] + | | +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords$1MerchantSales", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "true", @Image = "MerchantSales", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "true", @RegularClass = "false", @SimpleName = "MerchantSales", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | +- RecordComponentList[@Size = "2", @Varargs = "false"] + | | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "local", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | | +- ModifierList[] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Merchant", @TypeImage = "Merchant"] + | | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "merchant", @LambdaParameter = "false", @LocalVariable = "false", @Name = "merchant", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "merchant", @Visibility = "private", @Volatile = "false"] + | | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "local", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "double", @PrimitiveType = "true", @TypeImage = "double"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "sales", @LambdaParameter = "false", @LocalVariable = "false", @Name = "sales", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "sales", @Visibility = "private", @Volatile = "false"] + | | +- RecordBody[@Size = "0"] + | +- ReturnStatement[] + | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "collect", @MethodName = "collect", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "map", @MethodName = "map", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "sorted", @MethodName = "sorted", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "map", @MethodName = "map", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "stream", @MethodName = "stream", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "merchants", @Name = "merchants", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | | +- ArgumentList[@Size = "0"] + | | | | +- ArgumentList[@Size = "1"] + | | | | +- LambdaExpression[@BlockBody = "false", @CompileTimeConstant = "false", @Expression = "true", @ExpressionBody = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- LambdaParameterList[@Size = "1"] + | | | | | +- LambdaParameter[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "true", @Visibility = "package", @Volatile = "false"] + | | | | | +- ModifierList[] + | | | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "package", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "merchant", @LambdaParameter = "true", @LocalVariable = "false", @Name = "merchant", @Native = "false", @PackagePrivate = "true", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "true", @VariableName = "merchant", @Visibility = "package", @Volatile = "false"] + | | | | +- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "false", @Expression = "true", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "MerchantSales", @TypeImage = "MerchantSales"] + | | | | +- ArgumentList[@Size = "2"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "merchant", @Name = "merchant", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "computeSales", @MethodName = "computeSales", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ArgumentList[@Size = "2"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "merchant", @Name = "merchant", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "month", @Name = "month", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ArgumentList[@Size = "1"] + | | | +- LambdaExpression[@BlockBody = "false", @CompileTimeConstant = "false", @Expression = "true", @ExpressionBody = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- LambdaParameterList[@Size = "2"] + | | | | +- LambdaParameter[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "true", @Visibility = "package", @Volatile = "false"] + | | | | | +- ModifierList[] + | | | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "package", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "m1", @LambdaParameter = "true", @LocalVariable = "false", @Name = "m1", @Native = "false", @PackagePrivate = "true", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "true", @VariableName = "m1", @Visibility = "package", @Volatile = "false"] + | | | | +- LambdaParameter[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "true", @Visibility = "package", @Volatile = "false"] + | | | | +- ModifierList[] + | | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "package", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "m2", @LambdaParameter = "true", @LocalVariable = "false", @Name = "m2", @Native = "false", @PackagePrivate = "true", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "true", @VariableName = "m2", @Visibility = "package", @Volatile = "false"] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "compare", @MethodName = "compare", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Double", @TypeImage = "Double"] + | | | +- ArgumentList[@Size = "2"] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "sales", @MethodName = "sales", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "m2", @Name = "m2", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ArgumentList[@Size = "0"] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "sales", @MethodName = "sales", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "m1", @Name = "m1", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ArgumentList[@Size = "0"] + | | +- ArgumentList[@Size = "1"] + | | +- MethodReference[@CompileTimeConstant = "false", @ConstructorReference = "false", @Expression = "true", @MethodName = "merchant", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "MerchantSales", @TypeImage = "MerchantSales"] + | +- ArgumentList[@Size = "1"] + | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "toList", @MethodName = "toList", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Collectors", @TypeImage = "Collectors"] + | +- ArgumentList[@Size = "0"] + +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "package", @Final = "false", @Image = "methodWithLocalRecordAndModifiers", @MethodName = "methodWithLocalRecordAndModifiers", @Name = "methodWithLocalRecordAndModifiers", @Native = "false", @Overridden = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "package", @Void = "true", @Volatile = "false"] + | +- ModifierList[] + | +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + | +- FormalParameters[@Size = "0"] + | +- Block[@Size = "4", @containsComment = "false"] + | +- LocalClassStatement[] + | | +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords$1MyRecord1", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "true", @Image = "MyRecord1", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "true", @RegularClass = "false", @SimpleName = "MyRecord1", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | +- RecordComponentList[@Size = "1", @Varargs = "false"] + | | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "local", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "a", @LambdaParameter = "false", @LocalVariable = "false", @Name = "a", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "a", @Visibility = "private", @Volatile = "false"] + | | +- RecordBody[@Size = "0"] + | +- LocalClassStatement[] + | | +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords$1MyRecord2", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "true", @Image = "MyRecord2", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "true", @RegularClass = "false", @SimpleName = "MyRecord2", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "true", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | +- RecordComponentList[@Size = "1", @Varargs = "false"] + | | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "local", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "a", @LambdaParameter = "false", @LocalVariable = "false", @Name = "a", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "a", @Visibility = "private", @Volatile = "false"] + | | +- RecordBody[@Size = "0"] + | +- LocalClassStatement[] + | | +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords$1MyRecord3", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "true", @Image = "MyRecord3", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "true", @RegularClass = "false", @SimpleName = "MyRecord3", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | | +- Annotation[@AnnotationName = "Deprecated", @SimpleName = "Deprecated"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Deprecated", @TypeImage = "Deprecated"] + | | +- RecordComponentList[@Size = "1", @Varargs = "false"] + | | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "local", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "a", @LambdaParameter = "false", @LocalVariable = "false", @Name = "a", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "a", @Visibility = "private", @Volatile = "false"] + | | +- RecordBody[@Size = "0"] + | +- LocalClassStatement[] + | +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords$1MyRecord4", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "true", @Image = "MyRecord4", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "true", @RegularClass = "false", @SimpleName = "MyRecord4", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "true", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | | +- Annotation[@AnnotationName = "Deprecated", @SimpleName = "Deprecated"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Deprecated", @TypeImage = "Deprecated"] + | +- RecordComponentList[@Size = "1", @Varargs = "false"] + | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "local", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | +- ModifierList[] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "a", @LambdaParameter = "false", @LocalVariable = "false", @Name = "a", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "a", @Visibility = "private", @Volatile = "false"] + | +- RecordBody[@Size = "0"] + +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "package", @Final = "false", @Image = "methodWithLocalClass", @MethodName = "methodWithLocalClass", @Name = "methodWithLocalClass", @Native = "false", @Overridden = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "package", @Void = "true", @Volatile = "false"] + | +- ModifierList[] + | +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + | +- FormalParameters[@Size = "0"] + | +- Block[@Size = "1", @containsComment = "false"] + | +- LocalClassStatement[] + | +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "LocalRecords$1MyLocalClass", @CanonicalName = null, @EffectiveVisibility = "local", @Enum = "false", @Final = "false", @Image = "MyLocalClass", @Interface = "false", @Local = "true", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Record = "false", @RegularClass = "true", @SimpleName = "MyLocalClass", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceBody[@Size = "0"] + +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "package", @Final = "false", @Image = "methodWithLocalVarsNamedSealed", @MethodName = "methodWithLocalVarsNamedSealed", @Name = "methodWithLocalVarsNamedSealed", @Native = "false", @Overridden = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "package", @Void = "true", @Volatile = "false"] + +- ModifierList[] + +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + +- FormalParameters[@Size = "0"] + +- Block[@Size = "5", @containsComment = "false"] + +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | +- VariableDeclarator[@Initializer = "true", @Name = "result"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "result", @LambdaParameter = "false", @LocalVariable = "true", @Name = "result", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "result", @Visibility = "local", @Volatile = "false"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "0", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "0.0", @ValueAsFloat = "0.0", @ValueAsInt = "0", @ValueAsLong = "0"] + +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | +- VariableDeclarator[@Initializer = "true", @Name = "non"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "non", @LambdaParameter = "false", @LocalVariable = "true", @Name = "non", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "non", @Visibility = "local", @Volatile = "false"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "1", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "1.0", @ValueAsFloat = "1.0", @ValueAsInt = "1", @ValueAsLong = "1"] + +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | +- VariableDeclarator[@Initializer = "true", @Name = "sealed"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "sealed", @LambdaParameter = "false", @LocalVariable = "true", @Name = "sealed", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "sealed", @Visibility = "local", @Volatile = "false"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "2", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "2.0", @ValueAsFloat = "2.0", @ValueAsInt = "2", @ValueAsLong = "2"] + +- ExpressionStatement[] + | +- AssignmentExpression[@CompileTimeConstant = "false", @Compound = "false", @Expression = "true", @Operator = "=", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- VariableAccess[@AccessType = "WRITE", @CompileTimeConstant = "false", @Expression = "true", @Image = "result", @Name = "result", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "-", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "non", @Name = "non", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "sealed", @Name = "sealed", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- ExpressionStatement[] + +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + +- ArgumentList[@Size = "1"] + +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "result", @Name = "result", @ParenthesisDepth = "0", @Parenthesized = "false"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/NonSealedIdentifier.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/NonSealedIdentifier.txt new file mode 100644 index 0000000000..9f15096158 --- /dev/null +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/NonSealedIdentifier.txt @@ -0,0 +1,47 @@ ++- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = "true"] + +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "NonSealedIdentifier", @CanonicalName = "NonSealedIdentifier", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "NonSealedIdentifier", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "NonSealedIdentifier", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- ClassOrInterfaceBody[@Size = "1"] + +- MethodDeclaration[@Abstract = "false", @Arity = "1", @EffectiveVisibility = "public", @Final = "false", @Image = "main", @MethodName = "main", @Name = "main", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "true", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "true", @Volatile = "false"] + +- ModifierList[] + +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + +- FormalParameters[@Size = "1"] + | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- ArrayType[@ArrayDepth = "1", @ArrayType = "true", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "String"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- ArrayDimensions[@Size = "1"] + | | +- ArrayTypeDim[@Varargs = "false"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "true", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "args", @LambdaParameter = "false", @LocalVariable = "false", @Name = "args", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "args", @Visibility = "local", @Volatile = "false"] + +- Block[@Size = "5", @containsComment = "false"] + +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | +- VariableDeclarator[@Initializer = "true", @Name = "result"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "result", @LambdaParameter = "false", @LocalVariable = "true", @Name = "result", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "result", @Visibility = "local", @Volatile = "false"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "0", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "0.0", @ValueAsFloat = "0.0", @ValueAsInt = "0", @ValueAsLong = "0"] + +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | +- VariableDeclarator[@Initializer = "true", @Name = "non"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "non", @LambdaParameter = "false", @LocalVariable = "true", @Name = "non", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "non", @Visibility = "local", @Volatile = "false"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "1", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "1.0", @ValueAsFloat = "1.0", @ValueAsInt = "1", @ValueAsLong = "1"] + +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | +- VariableDeclarator[@Initializer = "true", @Name = "sealed"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "sealed", @LambdaParameter = "false", @LocalVariable = "true", @Name = "sealed", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "sealed", @Visibility = "local", @Volatile = "false"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "2", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "2.0", @ValueAsFloat = "2.0", @ValueAsInt = "2", @ValueAsLong = "2"] + +- ExpressionStatement[] + | +- AssignmentExpression[@CompileTimeConstant = "false", @Compound = "false", @Expression = "true", @Operator = "=", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- VariableAccess[@AccessType = "WRITE", @CompileTimeConstant = "false", @Expression = "true", @Image = "result", @Name = "result", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "-", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "non", @Name = "non", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "sealed", @Name = "sealed", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- ExpressionStatement[] + +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + +- ArgumentList[@Size = "1"] + +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "result", @Name = "result", @ParenthesisDepth = "0", @Parenthesized = "false"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/PatternMatchingInstanceof.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/PatternMatchingInstanceof.txt new file mode 100644 index 0000000000..7d8ed2d92a --- /dev/null +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/PatternMatchingInstanceof.txt @@ -0,0 +1,275 @@ ++- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = "true"] + +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "PatternMatchingInstanceof", @CanonicalName = "PatternMatchingInstanceof", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "PatternMatchingInstanceof", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "PatternMatchingInstanceof", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- ClassOrInterfaceBody[@Size = "3"] + +- FieldDeclaration[@Abstract = "false", @EffectiveVisibility = "private", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @VariableName = "s", @Visibility = "private", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | +- VariableDeclarator[@Initializer = "true", @Name = "s"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "true", @Final = "false", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "private", @Volatile = "false"] + | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "other string", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"other string\"", @IntLiteral = "false", @Length = "12", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "public", @Final = "false", @Image = "test", @MethodName = "test", @Name = "test", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "true", @Volatile = "false"] + | +- ModifierList[] + | +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + | +- FormalParameters[@Size = "0"] + | +- Block[@Size = "8", @containsComment = "false"] + | +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Object", @TypeImage = "Object"] + | | +- VariableDeclarator[@Initializer = "true", @Name = "obj"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "obj", @LambdaParameter = "false", @LocalVariable = "true", @Name = "obj", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "obj", @Visibility = "local", @Volatile = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "abc", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"abc\"", @IntLiteral = "false", @Length = "3", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | +- IfStatement[@Else = "true"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- PatternExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "true", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "local", @Volatile = "false"] + | | +- Block[@Size = "3", @containsComment = "false"] + | | | +- ExpressionStatement[] + | | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | | | +- ArgumentList[@Size = "1"] + | | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "a) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"a) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ExpressionStatement[] + | | | | +- AssignmentExpression[@CompileTimeConstant = "false", @Compound = "false", @Expression = "true", @Operator = "=", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "WRITE", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "other value", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"other value\"", @IntLiteral = "false", @Length = "11", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | | +- ExpressionStatement[] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | | +- ArgumentList[@Size = "1"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "changed s to ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"changed s to \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = ": obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\": obj == s: \"", @IntLiteral = "false", @Length = "12", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | +- ExpressionStatement[] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | +- ArgumentList[@Size = "1"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "b) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"b) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- IfStatement[@Else = "true"] + | | +- UnaryExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "!", @ParenthesisDepth = "0", @Parenthesized = "false", @Prefix = "true"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "instanceof", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- PatternExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "true", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "local", @Volatile = "false"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | | +- ExpressionStatement[] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | | +- ArgumentList[@Size = "1"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "c) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"c) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | +- ExpressionStatement[] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | +- ArgumentList[@Size = "1"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "d) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"d) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- IfStatement[@Else = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "&&", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- PatternExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | | | | +- ModifierList[] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "true", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "local", @Volatile = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = ">", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "length", @MethodName = "length", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ArgumentList[@Size = "0"] + | | | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "2", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "2.0", @ValueAsFloat = "2.0", @ValueAsInt = "2", @ValueAsLong = "2"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | +- ExpressionStatement[] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | +- ArgumentList[@Size = "1"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "e) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"e) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- IfStatement[@Else = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "||", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- PatternExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | | | | +- ModifierList[] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "true", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "local", @Volatile = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = ">", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "length", @MethodName = "length", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ArgumentList[@Size = "0"] + | | | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "5", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "5.0", @ValueAsFloat = "5.0", @ValueAsInt = "5", @ValueAsLong = "5"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | +- ExpressionStatement[] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | +- ArgumentList[@Size = "1"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "f) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"f) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- IfStatement[@Else = "true"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- PatternExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "true", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "true", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "local", @Volatile = "false"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | | +- ExpressionStatement[] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | | +- ArgumentList[@Size = "1"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "g) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"g) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | +- ExpressionStatement[] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | +- ArgumentList[@Size = "1"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "h) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"h) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- IfStatement[@Else = "true"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- PatternExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | | | +- ModifierList[] + | | | | +- Annotation[@AnnotationName = "Deprecated", @SimpleName = "Deprecated"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Deprecated", @TypeImage = "Deprecated"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "true", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "local", @Volatile = "false"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | | +- ExpressionStatement[] + | | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | | +- ArgumentList[@Size = "1"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "i) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"i) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- Block[@Size = "1", @containsComment = "true"] + | | +- ExpressionStatement[] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | +- ArgumentList[@Size = "1"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "j) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"j) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- IfStatement[@Else = "true"] + | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- PatternExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "true", @Native = "false", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | | +- ModifierList[] + | | | +- Annotation[@AnnotationName = "Deprecated", @SimpleName = "Deprecated"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Deprecated", @TypeImage = "Deprecated"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "s", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @Native = "false", @PackagePrivate = "false", @PatternBinding = "true", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "true", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "s", @Visibility = "local", @Volatile = "false"] + | +- Block[@Size = "1", @containsComment = "true"] + | | +- ExpressionStatement[] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | | +- ArgumentList[@Size = "1"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "k) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"k) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- Block[@Size = "1", @containsComment = "true"] + | +- ExpressionStatement[] + | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | +- ArgumentList[@Size = "1"] + | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "l) obj == s: ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"l) obj == s: \"", @IntLiteral = "false", @Length = "13", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "==", @ParenthesisDepth = "1", @Parenthesized = "true"] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- MethodDeclaration[@Abstract = "false", @Arity = "1", @EffectiveVisibility = "public", @Final = "false", @Image = "main", @MethodName = "main", @Name = "main", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "true", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "true", @Volatile = "false"] + +- ModifierList[] + +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + +- FormalParameters[@Size = "1"] + | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- ArrayType[@ArrayDepth = "1", @ArrayType = "true", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "String"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- ArrayDimensions[@Size = "1"] + | | +- ArrayTypeDim[@Varargs = "false"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "true", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "args", @LambdaParameter = "false", @LocalVariable = "false", @Name = "args", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "args", @Visibility = "local", @Volatile = "false"] + +- Block[@Size = "1", @containsComment = "false"] + +- ExpressionStatement[] + +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "test", @MethodName = "test", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "false", @Expression = "true", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "PatternMatchingInstanceof", @TypeImage = "PatternMatchingInstanceof"] + | +- ArgumentList[@Size = "0"] + +- ArgumentList[@Size = "0"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Point.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Point.txt index 088f830cb6..ef0e18aba6 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Point.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Point.txt @@ -1,64 +1,44 @@ -+- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = true] - +- TypeDeclaration[] - +- RecordDeclaration[@Abstract = false, @BinaryName = "Point", @Default = false, @Final = true, @Image = "Point", @Local = false, @Modifiers = 1, @Native = false, @Nested = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "Point", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - +- RecordComponentList[@Size = 2] - | +- RecordComponent[@Varargs = false] - | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "x", @LambdaParameter = false, @LocalVariable = false, @Name = "x", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "x"] - | +- RecordComponent[@Varargs = false] - | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "y", @LambdaParameter = false, @LocalVariable = false, @Name = "y", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "y"] - +- RecordBody[] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.METHOD] - +- MethodDeclaration[@Abstract = false, @Arity = 1, @Default = false, @Final = false, @InterfaceMember = false, @Kind = MethodLikeKind.METHOD, @MethodName = "main", @Modifiers = 17, @Name = "main", @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = true, @Strictfp = false, @Synchronized = false, @SyntacticallyAbstract = false, @SyntacticallyPublic = true, @Transient = false, @Void = true, @Volatile = false] - +- ResultType[@Void = true, @returnsArray = false] - +- MethodDeclarator[@Image = "main", @ParameterCount = 1] - | +- FormalParameters[@ParameterCount = 1, @Size = 1] - | +- FormalParameter[@Abstract = false, @Array = true, @ArrayDepth = 1, @Default = false, @ExplicitReceiverParameter = false, @Final = false, @Modifiers = 0, @Native = false, @PackagePrivate = true, @Private = false, @Protected = false, @Public = false, @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeInferred = false, @Varargs = false, @Volatile = false] - | +- Type[@Array = true, @ArrayDepth = 1, @ArrayType = true, @TypeImage = "String"] - | | +- ReferenceType[@Array = true, @ArrayDepth = 1] - | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = true, @ArrayDepth = 1, @Image = "String", @ReferenceToClassSameCompilationUnit = false] - | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = true, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @FormalParameter = true, @Image = "args", @LambdaParameter = false, @LocalVariable = false, @Name = "args", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "args"] - +- Block[@containsComment = false] - +- BlockStatement[@Allocation = true] - | +- LocalVariableDeclaration[@Abstract = false, @Array = false, @ArrayDepth = 0, @Default = false, @Final = false, @Modifiers = 0, @Native = false, @PackagePrivate = true, @Private = false, @Protected = false, @Public = false, @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeInferred = false, @VariableName = "p", @Volatile = false] - | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "Point"] - | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Point", @ReferenceToClassSameCompilationUnit = false] - | +- VariableDeclarator[@Initializer = true, @Name = "p"] - | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @FormalParameter = false, @Image = "p", @LambdaParameter = false, @LocalVariable = true, @Name = "p", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "p"] - | +- VariableInitializer[] - | +- Expression[@StandAlonePrimitive = false] - | +- PrimaryExpression[] - | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | +- AllocationExpression[@AnonymousClass = false] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Point", @ReferenceToClassSameCompilationUnit = false] - | +- Arguments[@ArgumentCount = 2, @Size = 2] - | +- ArgumentList[@Size = 2] - | +- Expression[@StandAlonePrimitive = true] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = "1", @FloatLiteral = false, @Image = "1", @IntLiteral = true, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = false, @TextBlock = false, @TextBlockContent = "1", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 1, @ValueAsLong = 1] - | +- Expression[@StandAlonePrimitive = true] - | +- PrimaryExpression[] - | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = "2", @FloatLiteral = false, @Image = "2", @IntLiteral = true, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = false, @TextBlock = false, @TextBlockContent = "2", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 2, @ValueAsLong = 2] - +- BlockStatement[@Allocation = false] - +- Statement[] - +- StatementExpression[] - +- PrimaryExpression[] - +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | +- Name[@Image = "System.out.println"] - +- PrimarySuffix[@ArgumentCount = 1, @Arguments = true, @ArrayDereference = false] - +- Arguments[@ArgumentCount = 1, @Size = 1] - +- ArgumentList[@Size = 1] - +- Expression[@StandAlonePrimitive = false] - +- AdditiveExpression[@Image = "+", @Operator = "+"] - +- PrimaryExpression[] - | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = ""p = "", @FloatLiteral = false, @Image = ""p = "", @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = true, @TextBlock = false, @TextBlockContent = ""p = "", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0] - +- PrimaryExpression[] - +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - +- Name[@Image = "p"] ++- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = "true"] + +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Point", @CanonicalName = "Point", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "Point", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "Point", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- RecordComponentList[@Size = "2", @Varargs = "false"] + | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | +- ModifierList[] + | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "x", @LambdaParameter = "false", @LocalVariable = "false", @Name = "x", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "x", @Visibility = "private", @Volatile = "false"] + | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | +- ModifierList[] + | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "y", @LambdaParameter = "false", @LocalVariable = "false", @Name = "y", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "y", @Visibility = "private", @Volatile = "false"] + +- RecordBody[@Size = "1"] + +- MethodDeclaration[@Abstract = "false", @Arity = "1", @EffectiveVisibility = "public", @Final = "false", @Image = "main", @MethodName = "main", @Name = "main", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "true", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "true", @Volatile = "false"] + +- ModifierList[] + +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + +- FormalParameters[@Size = "1"] + | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- ArrayType[@ArrayDepth = "1", @ArrayType = "true", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "String"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- ArrayDimensions[@Size = "1"] + | | +- ArrayTypeDim[@Varargs = "false"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "true", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "args", @LambdaParameter = "false", @LocalVariable = "false", @Name = "args", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "args", @Visibility = "local", @Volatile = "false"] + +- Block[@Size = "2", @containsComment = "false"] + +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Point", @TypeImage = "Point"] + | +- VariableDeclarator[@Initializer = "true", @Name = "p"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "p", @LambdaParameter = "false", @LocalVariable = "true", @Name = "p", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "p", @Visibility = "local", @Volatile = "false"] + | +- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "false", @Expression = "true", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Point", @TypeImage = "Point"] + | +- ArgumentList[@Size = "2"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "1", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "1.0", @ValueAsFloat = "1.0", @ValueAsInt = "1", @ValueAsLong = "1"] + | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "2", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "2.0", @ValueAsFloat = "2.0", @ValueAsInt = "2", @ValueAsLong = "2"] + +- ExpressionStatement[] + +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + +- ArgumentList[@Size = "1"] + +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = "+", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "p = ", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"p = \"", @IntLiteral = "false", @Length = "4", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "p", @Name = "p", @ParenthesisDepth = "0", @Parenthesized = "false"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Records.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Records.txt index 43ad6b3cbb..95f1b1ce16 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Records.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16/Records.txt @@ -1,317 +1,223 @@ -+- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = true] - +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.io.IOException", @ImportedSimpleName = "IOException", @PackageName = "java.io", @Static = false] - | +- Name[@Image = "java.io.IOException"] - +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.lang.annotation.Target", @ImportedSimpleName = "Target", @PackageName = "java.lang.annotation", @Static = false] - | +- Name[@Image = "java.lang.annotation.Target"] - +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.lang.annotation.ElementType", @ImportedSimpleName = "ElementType", @PackageName = "java.lang.annotation", @Static = false] - | +- Name[@Image = "java.lang.annotation.ElementType"] - +- TypeDeclaration[] - +- ClassOrInterfaceDeclaration[@Abstract = false, @BinaryName = "Records", @Default = false, @Final = false, @Image = "Records", @Interface = false, @Local = false, @Modifiers = 1, @Native = false, @Nested = false, @NonSealed = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Sealed = false, @SimpleName = "Records", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.CLASS, @Volatile = false] - +- ClassOrInterfaceBody[@AnonymousInnerClass = false, @EnumChild = false] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.ANNOTATION] - | +- Annotation[@AnnotationName = "Target"] - | | +- SingleMemberAnnotation[@AnnotationName = "Target"] - | | +- Name[@Image = "Target"] - | | +- MemberValue[] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- Name[@Image = "ElementType.TYPE_USE"] - | +- AnnotationTypeDeclaration[@Abstract = false, @BinaryName = "Records$Nullable", @Default = false, @Final = false, @Image = "Nullable", @Local = false, @Modifiers = 0, @Native = false, @Nested = true, @PackagePrivate = true, @Private = false, @Protected = false, @Public = false, @SimpleName = "Nullable", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.ANNOTATION, @Volatile = false] - | +- AnnotationTypeBody[] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.ANNOTATION] - | +- Annotation[@AnnotationName = "Target"] - | | +- SingleMemberAnnotation[@AnnotationName = "Target"] - | | +- Name[@Image = "Target"] - | | +- MemberValue[] - | | +- MemberValueArrayInitializer[] - | | +- MemberValue[] - | | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- Name[@Image = "ElementType.CONSTRUCTOR"] - | | +- MemberValue[] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- Name[@Image = "ElementType.PARAMETER"] - | +- AnnotationTypeDeclaration[@Abstract = false, @BinaryName = "Records$MyAnnotation", @Default = false, @Final = false, @Image = "MyAnnotation", @Local = false, @Modifiers = 0, @Native = false, @Nested = true, @PackagePrivate = true, @Private = false, @Protected = false, @Public = false, @SimpleName = "MyAnnotation", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.ANNOTATION, @Volatile = false] - | +- AnnotationTypeBody[] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.RECORD] - | +- RecordDeclaration[@Abstract = false, @BinaryName = "Records$MyComplex", @Default = false, @Final = true, @Image = "MyComplex", @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "MyComplex", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - | +- RecordComponentList[@Size = 2] - | | +- RecordComponent[@Varargs = false] - | | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "real", @LambdaParameter = false, @LocalVariable = false, @Name = "real", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "real"] - | | +- RecordComponent[@Varargs = false] - | | +- Annotation[@AnnotationName = "Deprecated"] - | | | +- MarkerAnnotation[@AnnotationName = "Deprecated"] - | | | +- Name[@Image = "Deprecated"] - | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "imaginary", @LambdaParameter = false, @LocalVariable = false, @Name = "imaginary", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "imaginary"] - | +- RecordBody[] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.CONSTRUCTOR] - | | +- Annotation[@AnnotationName = "MyAnnotation"] - | | | +- MarkerAnnotation[@AnnotationName = "MyAnnotation"] - | | | +- Name[@Image = "MyAnnotation"] - | | +- ConstructorDeclaration[@Abstract = false, @Arity = 2, @Default = false, @Final = false, @Image = "MyComplex", @Kind = MethodLikeKind.CONSTRUCTOR, @Modifiers = 1, @Native = false, @PackagePrivate = false, @ParameterCount = 2, @Private = false, @Protected = false, @Public = true, @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @Volatile = false, @containsComment = false] - | | +- FormalParameters[@ParameterCount = 2, @Size = 2] - | | | +- FormalParameter[@Abstract = false, @Array = false, @ArrayDepth = 0, @Default = false, @ExplicitReceiverParameter = false, @Final = false, @Modifiers = 0, @Native = false, @PackagePrivate = true, @Private = false, @Protected = false, @Public = false, @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeInferred = false, @Varargs = false, @Volatile = false] - | | | | +- Annotation[@AnnotationName = "MyAnnotation"] - | | | | | +- MarkerAnnotation[@AnnotationName = "MyAnnotation"] - | | | | | +- Name[@Image = "MyAnnotation"] - | | | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @FormalParameter = true, @Image = "real", @LambdaParameter = false, @LocalVariable = false, @Name = "real", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "real"] - | | | +- FormalParameter[@Abstract = false, @Array = false, @ArrayDepth = 0, @Default = false, @ExplicitReceiverParameter = false, @Final = false, @Modifiers = 0, @Native = false, @PackagePrivate = true, @Private = false, @Protected = false, @Public = false, @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeInferred = false, @Varargs = false, @Volatile = false] - | | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @FormalParameter = true, @Image = "imaginary", @LambdaParameter = false, @LocalVariable = false, @Name = "imaginary", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "imaginary"] - | | +- BlockStatement[@Allocation = true] - | | | +- Statement[] - | | | +- IfStatement[@Else = false] - | | | +- Expression[@StandAlonePrimitive = false] - | | | | +- RelationalExpression[@Image = ">"] - | | | | +- PrimaryExpression[] - | | | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | | | +- Name[@Image = "real"] - | | | | +- PrimaryExpression[] - | | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = "100", @FloatLiteral = false, @Image = "100", @IntLiteral = true, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = false, @TextBlock = false, @TextBlockContent = "100", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 100, @ValueAsLong = 100] - | | | +- Statement[] - | | | +- ThrowStatement[@FirstClassOrInterfaceTypeImage = "IllegalArgumentException"] - | | | +- Expression[@StandAlonePrimitive = false] - | | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- AllocationExpression[@AnonymousClass = false] - | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "IllegalArgumentException", @ReferenceToClassSameCompilationUnit = false] - | | | +- Arguments[@ArgumentCount = 1, @Size = 1] - | | | +- ArgumentList[@Size = 1] - | | | +- Expression[@StandAlonePrimitive = false] - | | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = ""too big"", @FloatLiteral = false, @Image = ""too big"", @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = true, @TextBlock = false, @TextBlockContent = ""too big"", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0] - | | +- BlockStatement[@Allocation = false] - | | | +- Statement[] - | | | +- StatementExpression[] - | | | +- PrimaryExpression[] - | | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = true] - | | | | +- PrimarySuffix[@ArgumentCount = -1, @Arguments = false, @ArrayDereference = false, @Image = "real"] - | | | +- AssignmentOperator[@Compound = false, @Image = "="] - | | | +- Expression[@StandAlonePrimitive = false] - | | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- Name[@Image = "real"] - | | +- BlockStatement[@Allocation = false] - | | +- Statement[] - | | +- StatementExpression[] - | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = true] - | | | +- PrimarySuffix[@ArgumentCount = -1, @Arguments = false, @ArrayDereference = false, @Image = "imaginary"] - | | +- AssignmentOperator[@Compound = false, @Image = "="] - | | +- Expression[@StandAlonePrimitive = false] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- Name[@Image = "imaginary"] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.RECORD] - | | +- RecordDeclaration[@Abstract = false, @BinaryName = "Records$MyComplex$Nested", @Default = false, @Final = true, @Image = "Nested", @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "Nested", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - | | +- RecordComponentList[@Size = 1] - | | | +- RecordComponent[@Varargs = false] - | | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "a", @LambdaParameter = false, @LocalVariable = false, @Name = "a", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "a"] - | | +- RecordBody[] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.CLASS] - | +- ClassOrInterfaceDeclaration[@Abstract = false, @BinaryName = "Records$MyComplex$NestedClass", @Default = false, @Final = false, @Image = "NestedClass", @Interface = false, @Local = false, @Modifiers = 17, @Native = false, @Nested = true, @NonSealed = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Sealed = false, @SimpleName = "NestedClass", @Static = true, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.CLASS, @Volatile = false] - | +- ClassOrInterfaceBody[@AnonymousInnerClass = false, @EnumChild = false] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.RECORD] - | +- RecordDeclaration[@Abstract = false, @BinaryName = "Records$Range", @Default = false, @Final = true, @Image = "Range", @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "Range", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - | +- RecordComponentList[@Size = 2] - | | +- RecordComponent[@Varargs = false] - | | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "lo", @LambdaParameter = false, @LocalVariable = false, @Name = "lo", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "lo"] - | | +- RecordComponent[@Varargs = false] - | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "int"] - | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "hi", @LambdaParameter = false, @LocalVariable = false, @Name = "hi", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "hi"] - | +- RecordBody[] - | +- CompactConstructorDeclaration[@Abstract = false, @Default = false, @Final = false, @Image = "Range", @Kind = DeclarationKind.RECORD_CONSTRUCTOR, @Modifiers = 1, @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @Volatile = false] - | | +- Annotation[@AnnotationName = "MyAnnotation"] - | | | +- MarkerAnnotation[@AnnotationName = "MyAnnotation"] - | | | +- Name[@Image = "MyAnnotation"] - | | +- Block[@containsComment = false] - | | +- BlockStatement[@Allocation = true] - | | +- Statement[] - | | +- IfStatement[@Else = false] - | | +- Expression[@StandAlonePrimitive = false] - | | | +- RelationalExpression[@Image = ">"] - | | | +- PrimaryExpression[] - | | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | | +- Name[@Image = "lo"] - | | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- Name[@Image = "hi"] - | | +- Statement[] - | | +- ThrowStatement[@FirstClassOrInterfaceTypeImage = "IllegalArgumentException"] - | | +- Expression[@StandAlonePrimitive = false] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- AllocationExpression[@AnonymousClass = false] - | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "IllegalArgumentException", @ReferenceToClassSameCompilationUnit = false] - | | +- Arguments[@ArgumentCount = 1, @Size = 1] - | | +- ArgumentList[@Size = 1] - | | +- Expression[@StandAlonePrimitive = false] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- Name[@Image = "String.format"] - | | +- PrimarySuffix[@ArgumentCount = 3, @Arguments = true, @ArrayDereference = false] - | | +- Arguments[@ArgumentCount = 3, @Size = 3] - | | +- ArgumentList[@Size = 3] - | | +- Expression[@StandAlonePrimitive = false] - | | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = ""(%d,%d)"", @FloatLiteral = false, @Image = ""(%d,%d)"", @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = true, @TextBlock = false, @TextBlockContent = ""(%d,%d)"", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0] - | | +- Expression[@StandAlonePrimitive = false] - | | | +- PrimaryExpression[] - | | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | | +- Name[@Image = "lo"] - | | +- Expression[@StandAlonePrimitive = false] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- Name[@Image = "hi"] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.METHOD] - | +- MethodDeclaration[@Abstract = false, @Arity = 0, @Default = false, @Final = false, @InterfaceMember = false, @Kind = MethodLikeKind.METHOD, @MethodName = "foo", @Modifiers = 1, @Name = "foo", @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = false, @Strictfp = false, @Synchronized = false, @SyntacticallyAbstract = false, @SyntacticallyPublic = true, @Transient = false, @Void = true, @Volatile = false] - | +- ResultType[@Void = true, @returnsArray = false] - | +- MethodDeclarator[@Image = "foo", @ParameterCount = 0] - | | +- FormalParameters[@ParameterCount = 0, @Size = 0] - | +- Block[@containsComment = false] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.RECORD] - | +- RecordDeclaration[@Abstract = false, @BinaryName = "Records$VarRec", @Default = false, @Final = true, @Image = "VarRec", @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "VarRec", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - | +- RecordComponentList[@Size = 1] - | | +- RecordComponent[@Varargs = true] - | | +- Annotation[@AnnotationName = "Nullable"] - | | | +- MarkerAnnotation[@AnnotationName = "Nullable"] - | | | +- Name[@Image = "Nullable"] - | | +- Annotation[@AnnotationName = "Deprecated"] - | | | +- MarkerAnnotation[@AnnotationName = "Deprecated"] - | | | +- Name[@Image = "Deprecated"] - | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "String"] - | | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "String", @ReferenceToClassSameCompilationUnit = false] - | | | +- Annotation[@AnnotationName = "Nullable"] - | | | +- MarkerAnnotation[@AnnotationName = "Nullable"] - | | | +- Name[@Image = "Nullable"] - | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "x", @LambdaParameter = false, @LocalVariable = false, @Name = "x", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "x"] - | +- RecordBody[] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.RECORD] - | +- RecordDeclaration[@Abstract = false, @BinaryName = "Records$ArrayRec", @Default = false, @Final = true, @Image = "ArrayRec", @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "ArrayRec", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - | +- RecordComponentList[@Size = 1] - | | +- RecordComponent[@Varargs = false] - | | +- Type[@Array = true, @ArrayDepth = 1, @ArrayType = true, @TypeImage = "int"] - | | | +- ReferenceType[@Array = true, @ArrayDepth = 1] - | | | +- PrimitiveType[@Array = false, @ArrayDepth = 0, @Boolean = false, @Image = "int"] - | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = true, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "x", @LambdaParameter = false, @LocalVariable = false, @Name = "x", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "x"] - | +- RecordBody[] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.RECORD] - | +- RecordDeclaration[@Abstract = false, @BinaryName = "Records$EmptyRec", @Default = false, @Final = true, @Image = "EmptyRec", @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "EmptyRec", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - | +- TypeParameters[] - | | +- TypeParameter[@Image = "Type", @Name = "Type", @ParameterName = "Type", @TypeBound = false] - | +- RecordComponentList[@Size = 0] - | +- RecordBody[] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.METHOD] - | | +- MethodDeclaration[@Abstract = false, @Arity = 0, @Default = false, @Final = false, @InterfaceMember = false, @Kind = MethodLikeKind.METHOD, @MethodName = "foo", @Modifiers = 1, @Name = "foo", @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = false, @Strictfp = false, @Synchronized = false, @SyntacticallyAbstract = false, @SyntacticallyPublic = true, @Transient = false, @Void = true, @Volatile = false] - | | +- ResultType[@Void = true, @returnsArray = false] - | | +- MethodDeclarator[@Image = "foo", @ParameterCount = 0] - | | | +- FormalParameters[@ParameterCount = 0, @Size = 0] - | | +- Block[@containsComment = false] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.METHOD] - | | +- MethodDeclaration[@Abstract = false, @Arity = 0, @Default = false, @Final = false, @InterfaceMember = false, @Kind = MethodLikeKind.METHOD, @MethodName = "bar", @Modifiers = 1, @Name = "bar", @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = false, @Strictfp = false, @Synchronized = false, @SyntacticallyAbstract = false, @SyntacticallyPublic = true, @Transient = false, @Void = false, @Volatile = false] - | | +- ResultType[@Void = false, @returnsArray = false] - | | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "Type"] - | | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Type", @ReferenceToClassSameCompilationUnit = false] - | | +- MethodDeclarator[@Image = "bar", @ParameterCount = 0] - | | | +- FormalParameters[@ParameterCount = 0, @Size = 0] - | | +- Block[@containsComment = false] - | | +- BlockStatement[@Allocation = false] - | | +- Statement[] - | | +- ReturnStatement[] - | | +- Expression[@StandAlonePrimitive = false] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = null, @FloatLiteral = false, @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = false, @TextBlock = false, @TextBlockContent = null, @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0] - | | +- NullLiteral[] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.METHOD] - | +- MethodDeclaration[@Abstract = false, @Arity = 0, @Default = false, @Final = false, @InterfaceMember = false, @Kind = MethodLikeKind.METHOD, @MethodName = "baz", @Modifiers = 17, @Name = "baz", @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = true, @Strictfp = false, @Synchronized = false, @SyntacticallyAbstract = false, @SyntacticallyPublic = true, @Transient = false, @Void = true, @Volatile = false] - | +- ResultType[@Void = true, @returnsArray = false] - | +- MethodDeclarator[@Image = "baz", @ParameterCount = 0] - | | +- FormalParameters[@ParameterCount = 0, @Size = 0] - | +- Block[@containsComment = false] - | +- BlockStatement[@Allocation = true] - | | +- LocalVariableDeclaration[@Abstract = false, @Array = false, @ArrayDepth = 0, @Default = false, @Final = false, @Modifiers = 0, @Native = false, @PackagePrivate = true, @Private = false, @Protected = false, @Public = false, @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeInferred = false, @VariableName = "r", @Volatile = false] - | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "EmptyRec"] - | | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "EmptyRec", @ReferenceToClassSameCompilationUnit = false] - | | | +- TypeArguments[@Diamond = false] - | | | +- TypeArgument[@Wildcard = false] - | | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "String", @ReferenceToClassSameCompilationUnit = false] - | | +- VariableDeclarator[@Initializer = true, @Name = "r"] - | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @FormalParameter = false, @Image = "r", @LambdaParameter = false, @LocalVariable = true, @Name = "r", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "r"] - | | +- VariableInitializer[] - | | +- Expression[@StandAlonePrimitive = false] - | | +- PrimaryExpression[] - | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- AllocationExpression[@AnonymousClass = false] - | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "EmptyRec", @ReferenceToClassSameCompilationUnit = false] - | | | +- TypeArguments[@Diamond = true] - | | +- Arguments[@ArgumentCount = 0, @Size = 0] - | +- BlockStatement[@Allocation = false] - | +- Statement[] - | +- StatementExpression[] - | +- PrimaryExpression[] - | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | | +- Name[@Image = "System.out.println"] - | +- PrimarySuffix[@ArgumentCount = 1, @Arguments = true, @ArrayDereference = false] - | +- Arguments[@ArgumentCount = 1, @Size = 1] - | +- ArgumentList[@Size = 1] - | +- Expression[@StandAlonePrimitive = false] - | +- PrimaryExpression[] - | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false] - | +- Name[@Image = "r"] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.INTERFACE] - | +- ClassOrInterfaceDeclaration[@Abstract = false, @BinaryName = "Records$Person", @Default = false, @Final = false, @Image = "Person", @Interface = true, @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @NonSealed = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Sealed = false, @SimpleName = "Person", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.INTERFACE, @Volatile = false] - | +- ClassOrInterfaceBody[@AnonymousInnerClass = false, @EnumChild = false] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.METHOD] - | | +- MethodDeclaration[@Abstract = true, @Arity = 0, @Default = false, @Final = false, @InterfaceMember = true, @Kind = MethodLikeKind.METHOD, @MethodName = "firstName", @Modifiers = 0, @Name = "firstName", @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = false, @Strictfp = false, @Synchronized = false, @SyntacticallyAbstract = false, @SyntacticallyPublic = false, @Transient = false, @Void = false, @Volatile = false] - | | +- ResultType[@Void = false, @returnsArray = false] - | | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "String"] - | | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "String", @ReferenceToClassSameCompilationUnit = false] - | | +- MethodDeclarator[@Image = "firstName", @ParameterCount = 0] - | | +- FormalParameters[@ParameterCount = 0, @Size = 0] - | +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.METHOD] - | +- MethodDeclaration[@Abstract = true, @Arity = 0, @Default = false, @Final = false, @InterfaceMember = true, @Kind = MethodLikeKind.METHOD, @MethodName = "lastName", @Modifiers = 0, @Name = "lastName", @Native = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Static = false, @Strictfp = false, @Synchronized = false, @SyntacticallyAbstract = false, @SyntacticallyPublic = false, @Transient = false, @Void = false, @Volatile = false] - | +- ResultType[@Void = false, @returnsArray = false] - | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "String"] - | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "String", @ReferenceToClassSameCompilationUnit = false] - | +- MethodDeclarator[@Image = "lastName", @ParameterCount = 0] - | +- FormalParameters[@ParameterCount = 0, @Size = 0] - +- ClassOrInterfaceBodyDeclaration[@AnonymousInnerClass = false, @EnumChild = false, @Kind = DeclarationKind.RECORD] - +- RecordDeclaration[@Abstract = false, @BinaryName = "Records$PersonRecord", @Default = false, @Final = true, @Image = "PersonRecord", @Local = false, @Modifiers = 1, @Native = false, @Nested = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @SimpleName = "PersonRecord", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.RECORD, @Volatile = false] - +- RecordComponentList[@Size = 2] - | +- RecordComponent[@Varargs = false] - | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "String"] - | | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "String", @ReferenceToClassSameCompilationUnit = false] - | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "firstName", @LambdaParameter = false, @LocalVariable = false, @Name = "firstName", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "firstName"] - | +- RecordComponent[@Varargs = false] - | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "String"] - | | +- ReferenceType[@Array = false, @ArrayDepth = 0] - | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "String", @ReferenceToClassSameCompilationUnit = false] - | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = true, @FormalParameter = false, @Image = "lastName", @LambdaParameter = false, @LocalVariable = false, @Name = "lastName", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "lastName"] - +- ImplementsList[] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Person", @ReferenceToClassSameCompilationUnit = true] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "java.io.Serializable", @ReferenceToClassSameCompilationUnit = false] - +- RecordBody[] ++- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = "true"] + +- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.io.IOException", @ImportedSimpleName = "IOException", @PackageName = "java.io", @Static = "false"] + +- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.Target", @ImportedSimpleName = "Target", @PackageName = "java.lang.annotation", @Static = "false"] + +- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType", @ImportedSimpleName = "ElementType", @PackageName = "java.lang.annotation", @Static = "false"] + +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records", @CanonicalName = "Records", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "Records", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "Records", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- ClassOrInterfaceBody[@Size = "9"] + +- AnnotationTypeDeclaration[@Abstract = "true", @Annotation = "true", @Anonymous = "false", @BinaryName = "Records$Nullable", @CanonicalName = "Records.Nullable", @EffectiveVisibility = "package", @Enum = "false", @Final = "false", @Image = "Nullable", @Interface = "true", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Record = "false", @RegularClass = "false", @SimpleName = "Nullable", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | +- ModifierList[] + | | +- Annotation[@AnnotationName = "Target", @SimpleName = "Target"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Target", @TypeImage = "Target"] + | | +- AnnotationMemberList[@Size = "1"] + | | +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = "true"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "TYPE_USE", @Name = "TYPE_USE", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "ElementType", @TypeImage = "ElementType"] + | +- AnnotationTypeBody[@Size = "0"] + +- AnnotationTypeDeclaration[@Abstract = "true", @Annotation = "true", @Anonymous = "false", @BinaryName = "Records$MyAnnotation", @CanonicalName = "Records.MyAnnotation", @EffectiveVisibility = "package", @Enum = "false", @Final = "false", @Image = "MyAnnotation", @Interface = "true", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "true", @Private = "false", @Protected = "false", @Public = "false", @Record = "false", @RegularClass = "false", @SimpleName = "MyAnnotation", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "package", @Volatile = "false"] + | +- ModifierList[] + | | +- Annotation[@AnnotationName = "Target", @SimpleName = "Target"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Target", @TypeImage = "Target"] + | | +- AnnotationMemberList[@Size = "1"] + | | +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = "true"] + | | +- MemberValueArrayInitializer[] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "CONSTRUCTOR", @Name = "CONSTRUCTOR", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "ElementType", @TypeImage = "ElementType"] + | | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "PARAMETER", @Name = "PARAMETER", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "ElementType", @TypeImage = "ElementType"] + | +- AnnotationTypeBody[@Size = "0"] + +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$MyComplex", @CanonicalName = "Records.MyComplex", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "MyComplex", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "MyComplex", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- RecordComponentList[@Size = "2", @Varargs = "false"] + | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "real", @LambdaParameter = "false", @LocalVariable = "false", @Name = "real", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "real", @Visibility = "private", @Volatile = "false"] + | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | +- ModifierList[] + | | | +- Annotation[@AnnotationName = "Deprecated", @SimpleName = "Deprecated"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Deprecated", @TypeImage = "Deprecated"] + | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "imaginary", @LambdaParameter = "false", @LocalVariable = "false", @Name = "imaginary", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "imaginary", @Visibility = "private", @Volatile = "false"] + | +- RecordBody[@Size = "3"] + | +- ConstructorDeclaration[@Abstract = "false", @Arity = "2", @EffectiveVisibility = "public", @Final = "false", @Image = "MyComplex", @Name = "MyComplex", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "public", @Volatile = "false", @containsComment = "false"] + | | +- ModifierList[] + | | | +- Annotation[@AnnotationName = "MyAnnotation", @SimpleName = "MyAnnotation"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "MyAnnotation", @TypeImage = "MyAnnotation"] + | | +- FormalParameters[@Size = "2"] + | | | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | | | | +- ModifierList[] + | | | | | +- Annotation[@AnnotationName = "MyAnnotation", @SimpleName = "MyAnnotation"] + | | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "MyAnnotation", @TypeImage = "MyAnnotation"] + | | | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "real", @LambdaParameter = "false", @LocalVariable = "false", @Name = "real", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "real", @Visibility = "local", @Volatile = "false"] + | | | +- FormalParameter[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "local", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "true", @Image = "imaginary", @LambdaParameter = "false", @LocalVariable = "false", @Name = "imaginary", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "imaginary", @Visibility = "local", @Volatile = "false"] + | | +- Block[@Size = "3", @containsComment = "false"] + | | +- IfStatement[@Else = "false"] + | | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = ">", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "real", @Name = "real", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "100", @IntLiteral = "true", @Integral = "true", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "100.0", @ValueAsFloat = "100.0", @ValueAsInt = "100", @ValueAsLong = "100"] + | | | +- ThrowStatement[] + | | | +- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "false", @Expression = "true", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "IllegalArgumentException", @TypeImage = "IllegalArgumentException"] + | | | +- ArgumentList[@Size = "1"] + | | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "too big", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"too big\"", @IntLiteral = "false", @Length = "7", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- ExpressionStatement[] + | | | +- AssignmentExpression[@CompileTimeConstant = "false", @Compound = "false", @Expression = "true", @Operator = "=", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- FieldAccess[@AccessType = "WRITE", @CompileTimeConstant = "false", @Expression = "true", @Image = "real", @Name = "real", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | | +- ThisExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "real", @Name = "real", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ExpressionStatement[] + | | +- AssignmentExpression[@CompileTimeConstant = "false", @Compound = "false", @Expression = "true", @Operator = "=", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- FieldAccess[@AccessType = "WRITE", @CompileTimeConstant = "false", @Expression = "true", @Image = "imaginary", @Name = "imaginary", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ThisExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "imaginary", @Name = "imaginary", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$MyComplex$Nested", @CanonicalName = "Records.MyComplex.Nested", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "Nested", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "Nested", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | | +- ModifierList[] + | | +- RecordComponentList[@Size = "1", @Varargs = "false"] + | | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "a", @LambdaParameter = "false", @LocalVariable = "false", @Name = "a", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "a", @Visibility = "private", @Volatile = "false"] + | | +- RecordBody[@Size = "0"] + | +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$MyComplex$NestedClass", @CanonicalName = "Records.MyComplex.NestedClass", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "NestedClass", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "NestedClass", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "true", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceBody[@Size = "0"] + +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$Range", @CanonicalName = "Records.Range", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "Range", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "Range", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- RecordComponentList[@Size = "2", @Varargs = "false"] + | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | | +- ModifierList[] + | | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "lo", @LambdaParameter = "false", @LocalVariable = "false", @Name = "lo", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "lo", @Visibility = "private", @Volatile = "false"] + | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | +- ModifierList[] + | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "hi", @LambdaParameter = "false", @LocalVariable = "false", @Name = "hi", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "hi", @Visibility = "private", @Volatile = "false"] + | +- RecordBody[@Size = "2"] + | +- CompactConstructorDeclaration[@Abstract = "false", @EffectiveVisibility = "public", @Final = "false", @Image = "Range", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | | +- ModifierList[] + | | | +- Annotation[@AnnotationName = "MyAnnotation", @SimpleName = "MyAnnotation"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "MyAnnotation", @TypeImage = "MyAnnotation"] + | | +- Block[@Size = "1", @containsComment = "false"] + | | +- IfStatement[@Else = "false"] + | | +- InfixExpression[@CompileTimeConstant = "false", @Expression = "true", @Operator = ">", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "lo", @Name = "lo", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "hi", @Name = "hi", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ThrowStatement[] + | | +- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "false", @Expression = "true", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "IllegalArgumentException", @TypeImage = "IllegalArgumentException"] + | | +- ArgumentList[@Size = "1"] + | | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "format", @MethodName = "format", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- ArgumentList[@Size = "3"] + | | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "(%d,%d)", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"(%d,%d)\"", @IntLiteral = "false", @Length = "7", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "lo", @Name = "lo", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "hi", @Name = "hi", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "public", @Final = "false", @Image = "foo", @MethodName = "foo", @Name = "foo", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "true", @Volatile = "false"] + | +- ModifierList[] + | +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + | +- FormalParameters[@Size = "0"] + | +- Block[@Size = "0", @containsComment = "false"] + +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$VarRec", @CanonicalName = "Records.VarRec", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "VarRec", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "VarRec", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- RecordComponentList[@Size = "1", @Varargs = "true"] + | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "true", @Visibility = "private", @Volatile = "false"] + | | +- ModifierList[] + | | | +- Annotation[@AnnotationName = "Nullable", @SimpleName = "Nullable"] + | | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Nullable", @TypeImage = "Nullable"] + | | | +- Annotation[@AnnotationName = "Deprecated", @SimpleName = "Deprecated"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Deprecated", @TypeImage = "Deprecated"] + | | +- ArrayType[@ArrayDepth = "1", @ArrayType = "true", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "String"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | | +- ArrayDimensions[@Size = "1"] + | | | +- ArrayTypeDim[@Varargs = "true"] + | | | +- Annotation[@AnnotationName = "Nullable", @SimpleName = "Nullable"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Nullable", @TypeImage = "Nullable"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "true", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "x", @LambdaParameter = "false", @LocalVariable = "false", @Name = "x", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "x", @Visibility = "private", @Volatile = "false"] + | +- RecordBody[@Size = "0"] + +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$ArrayRec", @CanonicalName = "Records.ArrayRec", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "ArrayRec", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "ArrayRec", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- RecordComponentList[@Size = "1", @Varargs = "false"] + | | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | +- ModifierList[] + | | +- ArrayType[@ArrayDepth = "1", @ArrayType = "true", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "int"] + | | | +- PrimitiveType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @Kind = "int", @PrimitiveType = "true", @TypeImage = "int"] + | | | +- ArrayDimensions[@Size = "1"] + | | | +- ArrayTypeDim[@Varargs = "false"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "true", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "x", @LambdaParameter = "false", @LocalVariable = "false", @Name = "x", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "x", @Visibility = "private", @Volatile = "false"] + | +- RecordBody[@Size = "0"] + +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$EmptyRec", @CanonicalName = "Records.EmptyRec", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "EmptyRec", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "EmptyRec", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- TypeParameters[@Size = "1"] + | | +- TypeParameter[@Image = "Type", @Name = "Type", @TypeBound = "false"] + | +- RecordComponentList[@Size = "0", @Varargs = "false"] + | +- RecordBody[@Size = "3"] + | +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "public", @Final = "false", @Image = "foo", @MethodName = "foo", @Name = "foo", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "true", @Volatile = "false"] + | | +- ModifierList[] + | | +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + | | +- FormalParameters[@Size = "0"] + | | +- Block[@Size = "0", @containsComment = "false"] + | +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "public", @Final = "false", @Image = "bar", @MethodName = "bar", @Name = "bar", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "false", @Volatile = "false"] + | | +- ModifierList[] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Type", @TypeImage = "Type"] + | | +- FormalParameters[@Size = "0"] + | | +- Block[@Size = "1", @containsComment = "false"] + | | +- ReturnStatement[] + | | +- NullLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "false", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @IntLiteral = "false", @LongLiteral = "false", @NullLiteral = "true", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false"] + | +- MethodDeclaration[@Abstract = "false", @Arity = "0", @EffectiveVisibility = "public", @Final = "false", @Image = "baz", @MethodName = "baz", @Name = "baz", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "true", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "true", @Volatile = "false"] + | +- ModifierList[] + | +- VoidType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "false", @PrimitiveType = "false", @TypeImage = "void"] + | +- FormalParameters[@Size = "0"] + | +- Block[@Size = "2", @containsComment = "false"] + | +- LocalVariableDeclaration[@Abstract = "false", @EffectiveVisibility = "local", @Final = "false", @Native = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @Visibility = "local", @Volatile = "false"] + | | +- ModifierList[] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "EmptyRec", @TypeImage = "EmptyRec"] + | | | +- TypeArguments[@Diamond = "false", @Size = "1"] + | | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- VariableDeclarator[@Initializer = "true", @Name = "r"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @FormalParameter = "false", @Image = "r", @LambdaParameter = "false", @LocalVariable = "true", @Name = "r", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "false", @Protected = "false", @Public = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "r", @Visibility = "local", @Volatile = "false"] + | | +- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "true", @Expression = "true", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "EmptyRec", @TypeImage = "EmptyRec"] + | | | +- TypeArguments[@Diamond = "true", @Size = "0"] + | | +- ArgumentList[@Size = "0"] + | +- ExpressionStatement[] + | +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "println", @MethodName = "println", @ParenthesisDepth = "0", @Parenthesized = "false"] + | +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "out", @Name = "out", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- TypeExpression[@CompileTimeConstant = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "System", @TypeImage = "System"] + | +- ArgumentList[@Size = "1"] + | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "r", @Name = "r", @ParenthesisDepth = "0", @Parenthesized = "false"] + +- ClassOrInterfaceDeclaration[@Abstract = "true", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$Person", @CanonicalName = "Records.Person", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "Person", @Interface = "true", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "false", @SimpleName = "Person", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceBody[@Size = "2"] + | +- MethodDeclaration[@Abstract = "true", @Arity = "0", @EffectiveVisibility = "public", @Final = "false", @Image = "firstName", @MethodName = "firstName", @Name = "firstName", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "false", @Volatile = "false"] + | | +- ModifierList[] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- FormalParameters[@Size = "0"] + | +- MethodDeclaration[@Abstract = "true", @Arity = "0", @EffectiveVisibility = "public", @Final = "false", @Image = "lastName", @MethodName = "lastName", @Name = "lastName", @Native = "false", @Overridden = "false", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "public", @Void = "false", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | +- FormalParameters[@Size = "0"] + +- RecordDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "Records$PersonRecord", @CanonicalName = "Records.PersonRecord", @EffectiveVisibility = "public", @Enum = "false", @Final = "true", @Image = "PersonRecord", @Interface = "false", @Local = "false", @Native = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "true", @RegularClass = "false", @SimpleName = "PersonRecord", @Static = "true", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "false", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- RecordComponentList[@Size = "2", @Varargs = "false"] + | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | | +- ModifierList[] + | | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "firstName", @LambdaParameter = "false", @LocalVariable = "false", @Name = "firstName", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "firstName", @Visibility = "private", @Volatile = "false"] + | +- RecordComponent[@Abstract = "false", @EffectiveVisibility = "private", @Final = "true", @Native = "false", @PackagePrivate = "false", @Private = "true", @Protected = "false", @Public = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @Varargs = "false", @Visibility = "private", @Volatile = "false"] + | +- ModifierList[] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "String", @TypeImage = "String"] + | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "private", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @FormalParameter = "false", @Image = "lastName", @LambdaParameter = "false", @LocalVariable = "false", @Name = "lastName", @Native = "false", @PackagePrivate = "false", @PatternBinding = "false", @Private = "true", @Protected = "false", @Public = "false", @RecordComponent = "true", @ResourceDeclaration = "false", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "false", @SyntacticallyStatic = "false", @Transient = "false", @TypeInferred = "false", @VariableName = "lastName", @Visibility = "private", @Volatile = "false"] + +- ImplementsList[@Size = "2"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Person", @TypeImage = "Person"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "true", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Serializable", @TypeImage = "Serializable"] + +- RecordBody[@Size = "0"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/expression/Expr.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/expression/Expr.txt index 12d87ee160..7ef9bb8d58 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/expression/Expr.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/expression/Expr.txt @@ -1,11 +1,11 @@ -+- CompilationUnit[@PackageName = "com.example.expression", @declarationsAreInDefaultPackage = false] - +- PackageDeclaration[@Name = "com.example.expression", @PackageNameImage = "com.example.expression"] - | +- Name[@Image = "com.example.expression"] - +- TypeDeclaration[] - +- ClassOrInterfaceDeclaration[@Abstract = false, @BinaryName = "com.example.expression.Expr", @Default = false, @Final = false, @Image = "Expr", @Interface = true, @Local = false, @Modifiers = 16385, @Native = false, @Nested = false, @NonSealed = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Sealed = true, @SimpleName = "Expr", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.INTERFACE, @Volatile = false] - +- PermitsList[] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "ConstantExpr", @ReferenceToClassSameCompilationUnit = false] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "PlusExpr", @ReferenceToClassSameCompilationUnit = false] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "TimesExpr", @ReferenceToClassSameCompilationUnit = false] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "NegExpr", @ReferenceToClassSameCompilationUnit = false] - +- ClassOrInterfaceBody[@AnonymousInnerClass = false, @EnumChild = false] ++- CompilationUnit[@PackageName = "com.example.expression", @declarationsAreInDefaultPackage = "false"] + +- PackageDeclaration[@Name = "com.example.expression"] + | +- ModifierList[] + +- ClassOrInterfaceDeclaration[@Abstract = "true", @Annotation = "false", @Anonymous = "false", @BinaryName = "com.example.expression.Expr", @CanonicalName = "com.example.expression.Expr", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "Expr", @Interface = "true", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "com.example.expression", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "false", @SimpleName = "Expr", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- PermitsList[@Size = "4"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "ConstantExpr", @TypeImage = "ConstantExpr"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "PlusExpr", @TypeImage = "PlusExpr"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "TimesExpr", @TypeImage = "TimesExpr"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "NegExpr", @TypeImage = "NegExpr"] + +- ClassOrInterfaceBody[@Size = "0"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Shape.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Shape.txt index 2a2f3f01fc..a81e26f5bb 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Shape.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Shape.txt @@ -1,10 +1,10 @@ -+- CompilationUnit[@PackageName = "com.example.geometry", @declarationsAreInDefaultPackage = false] - +- PackageDeclaration[@Name = "com.example.geometry", @PackageNameImage = "com.example.geometry"] - | +- Name[@Image = "com.example.geometry"] - +- TypeDeclaration[] - +- ClassOrInterfaceDeclaration[@Abstract = false, @BinaryName = "com.example.geometry.Shape", @Default = false, @Final = false, @Image = "Shape", @Interface = false, @Local = false, @Modifiers = 16385, @Native = false, @Nested = false, @NonSealed = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Sealed = true, @SimpleName = "Shape", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.CLASS, @Volatile = false] - +- PermitsList[] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Circle", @ReferenceToClassSameCompilationUnit = false] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Rectangle", @ReferenceToClassSameCompilationUnit = false] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Square", @ReferenceToClassSameCompilationUnit = false] - +- ClassOrInterfaceBody[@AnonymousInnerClass = false, @EnumChild = false] ++- CompilationUnit[@PackageName = "com.example.geometry", @declarationsAreInDefaultPackage = "false"] + +- PackageDeclaration[@Name = "com.example.geometry"] + | +- ModifierList[] + +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "com.example.geometry.Shape", @CanonicalName = "com.example.geometry.Shape", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "Shape", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "com.example.geometry", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "Shape", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- PermitsList[@Size = "3"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Circle", @TypeImage = "Circle"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Rectangle", @TypeImage = "Rectangle"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Square", @TypeImage = "Square"] + +- ClassOrInterfaceBody[@Size = "0"] diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Square.txt b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Square.txt index 94cd4275e2..faabc440c3 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Square.txt +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/ast/jdkversiontests/java16p/geometry/Square.txt @@ -1,8 +1,8 @@ -+- CompilationUnit[@PackageName = "com.example.geometry", @declarationsAreInDefaultPackage = false] - +- PackageDeclaration[@Name = "com.example.geometry", @PackageNameImage = "com.example.geometry"] - | +- Name[@Image = "com.example.geometry"] - +- TypeDeclaration[] - +- ClassOrInterfaceDeclaration[@Abstract = false, @BinaryName = "com.example.geometry.Square", @Default = false, @Final = false, @Image = "Square", @Interface = false, @Local = false, @Modifiers = 32769, @Native = false, @Nested = false, @NonSealed = true, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Sealed = false, @SimpleName = "Square", @Static = false, @Strictfp = false, @Synchronized = false, @Transient = false, @TypeKind = TypeKind.CLASS, @Volatile = false] - +- ExtendsList[] - | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Shape", @ReferenceToClassSameCompilationUnit = false] - +- ClassOrInterfaceBody[@AnonymousInnerClass = false, @EnumChild = false] ++- CompilationUnit[@PackageName = "com.example.geometry", @declarationsAreInDefaultPackage = "false"] + +- PackageDeclaration[@Name = "com.example.geometry"] + | +- ModifierList[] + +- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "com.example.geometry.Square", @CanonicalName = "com.example.geometry.Square", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "Square", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "com.example.geometry", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @SimpleName = "Square", @Static = "false", @Strictfp = "false", @Synchronized = "false", @SyntacticallyAbstract = "false", @SyntacticallyFinal = "false", @SyntacticallyPublic = "true", @SyntacticallyStatic = "false", @TopLevel = "true", @Transient = "false", @Visibility = "public", @Volatile = "false"] + +- ModifierList[] + +- ExtendsList[@Size = "1"] + | +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Shape", @TypeImage = "Shape"] + +- ClassOrInterfaceBody[@Size = "0"]