Fix unit tests

This commit is contained in:
Andreas Dangel
2021-07-22 20:35:18 +02:00
parent e4431d4d65
commit 1ec564b22d
16 changed files with 962 additions and 1462 deletions

View File

@ -1742,8 +1742,6 @@ void PrimaryPattern() #void:
void TypePattern():
{}
{
AnnotatedRefType() VariableDeclaratorId()
|
LocalVarModifierList() ReferenceType() VariableDeclaratorId()
}
@ -1754,11 +1752,11 @@ void InstanceOfExpression() #void:
LOOKAHEAD(1)
("instanceof"
(
AnnotatedRefType() [ VariableDeclaratorId() #TypePattern(2) ]
|
LOOKAHEAD("final" | "@") PrimaryPattern()
|
LOOKAHEAD("(") Pattern()
|
AnnotatedRefType() [ VariableDeclaratorId() #TypePattern(2) ]
)
{
jjtThis.setOp(BinaryOp.INSTANCEOF);

View File

@ -149,6 +149,20 @@ public class LanguageLevelChecker<T> {
*/
PATTERN_MATCHING_FOR_SWITCH(17, 17, false),
/**
* Part of pattern matching for switch
* @see #PATTERN_MATCHING_FOR_SWITCH
* @see <a href="https://openjdk.java.net/jeps/406">JEP 406: Pattern Matching for switch (Preview)</a>
*/
GUARDED_PATTERNS(17, 17, false),
/**
* Part of pattern matching for switch
* @see #PATTERN_MATCHING_FOR_SWITCH
* @see <a href="https://openjdk.java.net/jeps/406">JEP 406: Pattern Matching for switch (Preview)</a>
*/
NULL_CASE_LABELS(17, 17, false),
; // SUPPRESS CHECKSTYLE enum trailing semi is awesome
@ -502,7 +516,7 @@ public class LanguageLevelChecker<T> {
@Override
public Void visit(ASTGuardedPattern node, T data) {
check(node, PreviewFeature.PATTERN_MATCHING_FOR_SWITCH, data);
check(node, PreviewFeature.GUARDED_PATTERNS, data);
return null;
}
@ -547,11 +561,14 @@ public class LanguageLevelChecker<T> {
if (node.isDefault() && "case".equals(node.getFirstToken().getImage())) {
check(node, PreviewFeature.PATTERN_MATCHING_FOR_SWITCH, data);
}
if (node.getFirstChild() instanceof ASTGuardedPattern) {
check(node, PreviewFeature.GUARDED_PATTERNS, data);
}
if (node.getFirstChild() instanceof ASTPattern) {
check(node, PreviewFeature.PATTERN_MATCHING_FOR_SWITCH, data);
}
if (node.getFirstChild() instanceof ASTNullLiteral) {
check(node, PreviewFeature.PATTERN_MATCHING_FOR_SWITCH, data);
check(node, PreviewFeature.NULL_CASE_LABELS, data);
}
return null;
}

View File

@ -38,7 +38,7 @@ public class Java17PreviewTreeDumpTest extends BaseTreeDumpTest {
}
});
Assert.assertTrue("Unexpected message: " + thrown.getMessage(),
thrown.getMessage().contains("Pattern Matching in Switch is only supported with JDK 17 Preview."));
thrown.getMessage().contains("Pattern matching for switch is a preview feature of JDK 17, you should select your language version accordingly"));
}
@Test
@ -65,7 +65,7 @@ public class Java17PreviewTreeDumpTest extends BaseTreeDumpTest {
}
});
Assert.assertTrue("Unexpected message: " + thrown.getMessage(),
thrown.getMessage().contains("Null case labels in switch are only supported with JDK 17 Preview."));
thrown.getMessage().contains("Null case labels is a preview feature of JDK 17, you should select your language version accordingly"));
}
@Test
@ -82,7 +82,7 @@ public class Java17PreviewTreeDumpTest extends BaseTreeDumpTest {
}
});
Assert.assertTrue("Unexpected message: " + thrown.getMessage(),
thrown.getMessage().contains("Guarded patterns are only supported with JDK 17 Preview."));
thrown.getMessage().contains("Guarded patterns is a preview feature of JDK 17, you should select your language version accordingly"));
}
@Test

View File

@ -39,7 +39,7 @@ public class Java17TreeDumpTest extends BaseTreeDumpTest {
}
});
Assert.assertTrue("Unexpected message: " + thrown.getMessage(),
thrown.getMessage().contains("Sealed Classes are only supported with JDK 16 Preview and JDK >= 17."));
thrown.getMessage().contains("Sealed classes is a preview feature of JDK 16, you should select your language version accordingly"));
}
@Test
@ -63,7 +63,7 @@ public class Java17TreeDumpTest extends BaseTreeDumpTest {
}
});
Assert.assertTrue("Unexpected message: " + thrown.getMessage(),
thrown.getMessage().contains("Sealed Classes are only supported with JDK 16 Preview and JDK >= 17."));
thrown.getMessage().contains("Sealed classes is a preview feature of JDK 16, you should select your language version accordingly"));
}
@Test

View File

@ -24,7 +24,7 @@ public class JavaQualifiedNameTest {
private <T extends Node> List<T> getNodes(Class<T> target, String code) {
return JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("15-preview").getNodes(target, code);
return JavaParsingHelper.WITH_PROCESSING.withDefaultVersion("15").getNodes(target, code);
}
@Test

View File

@ -90,7 +90,7 @@ object ExpressionParsingCtx : NodeParsingCtx<ASTExpression>("expression") {
object StatementParsingCtx : NodeParsingCtx<ASTStatement>("statement") {
override fun getTemplate(construct: String, ctx: ParserTestCtx): String =
TypeBodyParsingCtx.getTemplate("{\n$construct}", ctx)
TypeBodyParsingCtx.getTemplate(" {\n $construct\n }", ctx)
override fun retrieveNode(acu: ASTCompilationUnit): ASTStatement =

View File

@ -1,3 +1,15 @@
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.MODULE;
import static java.lang.annotation.ElementType.PACKAGE;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
/**
*
* @see <a href="https://openjdk.java.net/jeps/394">JEP 394: Pattern Matching for instanceof</a>
@ -52,4 +64,15 @@ public class PatternMatchingInstanceof {
public static void main(String[] args) {
new PatternMatchingInstanceof().test();
}
// InstanceofExpression can be annotated
class Foo {
{
Object f = null;
Object o = f instanceof @Nullable Foo;
}
}
@Target(value=ElementType.TYPE_USE)
@interface Nullable { }
}

View File

@ -1,7 +1,17 @@
+- CompilationUnit[@PackageName = ""]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.CONSTRUCTOR", @ImportedSimpleName = "CONSTRUCTOR", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.FIELD", @ImportedSimpleName = "FIELD", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.LOCAL_VARIABLE", @ImportedSimpleName = "LOCAL_VARIABLE", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.METHOD", @ImportedSimpleName = "METHOD", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.MODULE", @ImportedSimpleName = "MODULE", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.PACKAGE", @ImportedSimpleName = "PACKAGE", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.PARAMETER", @ImportedSimpleName = "PARAMETER", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType.TYPE", @ImportedSimpleName = "TYPE", @PackageName = "java.lang.annotation.ElementType", @Static = "true"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.ElementType", @ImportedSimpleName = "ElementType", @PackageName = "java.lang.annotation", @Static = "false"]
+- ImportDeclaration[@ImportOnDemand = "false", @ImportedName = "java.lang.annotation.Target", @ImportedSimpleName = "Target", @PackageName = "java.lang.annotation", @Static = "false"]
+- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "PatternMatchingInstanceof", @CanonicalName = "PatternMatchingInstanceof", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Interface = "false", @Local = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Record = "false", @RegularClass = "true", @RegularInterface = "false", @SimpleName = "PatternMatchingInstanceof", @TopLevel = "true", @Visibility = "public"]
+- ModifierList[@EffectiveModifiers = "{public}", @ExplicitModifiers = "{public}"]
+- ClassOrInterfaceBody[@Size = "3"]
+- ClassOrInterfaceBody[@Size = "5"]
+- FieldDeclaration[@EffectiveVisibility = "private", @Visibility = "private"]
| +- ModifierList[@EffectiveModifiers = "{private}", @ExplicitModifiers = "{private}"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
@ -23,7 +33,7 @@
| | +- 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[@EffectiveVisibility = "package", @Visibility = "package"]
| | | +- TypePattern[@EffectiveVisibility = "package", @ParenthesisDepth = "0", @Visibility = "package"]
| | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
| | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
@ -75,7 +85,7 @@
| | | +- 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[@EffectiveVisibility = "package", @Visibility = "package"]
| | | +- TypePattern[@EffectiveVisibility = "package", @ParenthesisDepth = "0", @Visibility = "package"]
| | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
| | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
@ -108,7 +118,7 @@
| | | +- 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[@EffectiveVisibility = "package", @Visibility = "package"]
| | | | +- TypePattern[@EffectiveVisibility = "package", @ParenthesisDepth = "0", @Visibility = "package"]
| | | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| | | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
| | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
@ -134,7 +144,7 @@
| | | +- 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[@EffectiveVisibility = "package", @Visibility = "package"]
| | | | +- TypePattern[@EffectiveVisibility = "package", @ParenthesisDepth = "0", @Visibility = "package"]
| | | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| | | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
| | | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
@ -159,7 +169,7 @@
| | +- 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[@EffectiveVisibility = "package", @Visibility = "package"]
| | | +- TypePattern[@EffectiveVisibility = "package", @ParenthesisDepth = "0", @Visibility = "package"]
| | | +- ModifierList[@EffectiveModifiers = "{final}", @ExplicitModifiers = "{final}"]
| | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
| | | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "true", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "false", @Name = "s", @PatternBinding = "true", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
@ -191,7 +201,7 @@
| | +- 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[@EffectiveVisibility = "package", @Visibility = "package"]
| | | +- TypePattern[@EffectiveVisibility = "package", @ParenthesisDepth = "0", @Visibility = "package"]
| | | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| | | | +- Annotation[@SimpleName = "Deprecated"]
| | | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Deprecated"]
@ -225,7 +235,7 @@
| +- 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[@EffectiveVisibility = "package", @Visibility = "package"]
| | +- TypePattern[@EffectiveVisibility = "package", @ParenthesisDepth = "0", @Visibility = "package"]
| | +- ModifierList[@EffectiveModifiers = "{final}", @ExplicitModifiers = "{final}"]
| | | +- Annotation[@SimpleName = "Deprecated"]
| | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Deprecated"]
@ -256,20 +266,52 @@
| +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "obj", @Name = "obj", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "s", @Name = "s", @ParenthesisDepth = "0", @Parenthesized = "false"]
+- MethodDeclaration[@Abstract = "false", @Arity = "1", @EffectiveVisibility = "public", @Image = "main", @MainMethod = "true", @Name = "main", @Overridden = "false", @Varargs = "false", @Visibility = "public", @Void = "true"]
+- ModifierList[@EffectiveModifiers = "{public, static}", @ExplicitModifiers = "{public, static}"]
+- VoidType[]
+- FormalParameters[@Size = "1"]
| +- FormalParameter[@EffectiveVisibility = "local", @Final = "false", @Varargs = "false", @Visibility = "local"]
| +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| +- ArrayType[@ArrayDepth = "1"]
| | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
| | +- ArrayDimensions[@Size = "1"]
| | +- ArrayTypeDim[@Varargs = "false"]
| +- VariableDeclaratorId[@ArrayType = "true", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "true", @LambdaParameter = "false", @LocalVariable = "false", @Name = "args", @PatternBinding = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
+- Block[@Size = "1", @containsComment = "false"]
+- ExpressionStatement[]
+- MethodCall[@CompileTimeConstant = "false", @Image = "test", @MethodName = "test", @ParenthesisDepth = "0", @Parenthesized = "false"]
+- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "false", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "PatternMatchingInstanceof"]
| +- ArgumentList[@Size = "0"]
+- ArgumentList[@Size = "0"]
| +- ModifierList[@EffectiveModifiers = "{public, static}", @ExplicitModifiers = "{public, static}"]
| +- VoidType[]
| +- FormalParameters[@Size = "1"]
| | +- FormalParameter[@EffectiveVisibility = "local", @Final = "false", @Varargs = "false", @Visibility = "local"]
| | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| | +- ArrayType[@ArrayDepth = "1"]
| | | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "String"]
| | | +- ArrayDimensions[@Size = "1"]
| | | +- ArrayTypeDim[@Varargs = "false"]
| | +- VariableDeclaratorId[@ArrayType = "true", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "true", @LambdaParameter = "false", @LocalVariable = "false", @Name = "args", @PatternBinding = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
| +- Block[@Size = "1", @containsComment = "false"]
| +- ExpressionStatement[]
| +- MethodCall[@CompileTimeConstant = "false", @Image = "test", @MethodName = "test", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- ConstructorCall[@AnonymousClass = "false", @CompileTimeConstant = "false", @DiamondTypeArgs = "false", @MethodName = "new", @ParenthesisDepth = "0", @Parenthesized = "false", @QualifiedInstanceCreation = "false"]
| | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "PatternMatchingInstanceof"]
| | +- ArgumentList[@Size = "0"]
| +- ArgumentList[@Size = "0"]
+- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "PatternMatchingInstanceof$Foo", @CanonicalName = "PatternMatchingInstanceof.Foo", @EffectiveVisibility = "package", @Enum = "false", @Final = "false", @Interface = "false", @Local = "false", @Nested = "true", @PackageName = "", @PackagePrivate = "true", @Record = "false", @RegularClass = "true", @RegularInterface = "false", @SimpleName = "Foo", @TopLevel = "false", @Visibility = "package"]
| +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| +- ClassOrInterfaceBody[@Size = "1"]
| +- Initializer[@Static = "false"]
| +- Block[@Size = "2", @containsComment = "false"]
| +- LocalVariableDeclaration[@EffectiveVisibility = "local", @Final = "false", @TypeInferred = "false", @Visibility = "local"]
| | +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| | +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Object"]
| | +- VariableDeclarator[@Initializer = "true", @Name = "f"]
| | +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "true", @Name = "f", @PatternBinding = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
| | +- NullLiteral[@CompileTimeConstant = "false", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- LocalVariableDeclaration[@EffectiveVisibility = "local", @Final = "false", @TypeInferred = "false", @Visibility = "local"]
| +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Object"]
| +- VariableDeclarator[@Initializer = "true", @Name = "o"]
| +- VariableDeclaratorId[@ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @LambdaParameter = "false", @LocalVariable = "true", @Name = "o", @PatternBinding = "false", @RecordComponent = "false", @ResourceDeclaration = "false", @TypeInferred = "false", @Visibility = "local"]
| +- InfixExpression[@CompileTimeConstant = "false", @Operator = "instanceof", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "f", @Name = "f", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- TypeExpression[@CompileTimeConstant = "false", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Foo"]
| +- Annotation[@SimpleName = "Nullable"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Nullable"]
+- AnnotationTypeDeclaration[@Abstract = "true", @Annotation = "true", @Anonymous = "false", @BinaryName = "PatternMatchingInstanceof$Nullable", @CanonicalName = "PatternMatchingInstanceof.Nullable", @EffectiveVisibility = "package", @Enum = "false", @Final = "false", @Interface = "true", @Local = "false", @Nested = "true", @PackageName = "", @Record = "false", @RegularClass = "false", @RegularInterface = "false", @SimpleName = "Nullable", @TopLevel = "false", @Visibility = "package"]
+- ModifierList[@EffectiveModifiers = "{abstract, static}", @ExplicitModifiers = "{}"]
| +- Annotation[@SimpleName = "Target"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Target"]
| +- AnnotationMemberList[@Size = "1"]
| +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = "false"]
| +- FieldAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Image = "TYPE_USE", @Name = "TYPE_USE", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- TypeExpression[@CompileTimeConstant = "false", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "ElementType"]
+- AnnotationTypeBody[@Size = "0"]

View File

@ -1,11 +1,11 @@
+- CompilationUnit[@PackageName = "com.example.expression"]
+- CompilationUnit[@PackageName = "com.example.expression", @declarationsAreInDefaultPackage = "false"]
+- PackageDeclaration[@Name = "com.example.expression"]
| +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
+- ClassOrInterfaceDeclaration[@Abstract = "true", @Annotation = "false", @Anonymous = "false", @BinaryName = "com.example.expression.Expr", @CanonicalName = "com.example.expression.Expr", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Interface = "true", @Local = "false", @Nested = "false", @PackageName = "com.example.expression", @PackagePrivate = "false", @Record = "false", @RegularClass = "false", @RegularInterface = "true", @SimpleName = "Expr", @TopLevel = "true", @Visibility = "public"]
+- ModifierList[@EffectiveModifiers = "{public, sealed, abstract}", @ExplicitModifiers = "{public, sealed}"]
| +- 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", @RegularInterface = "true", @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[@FullyQualified = "false", @SimpleName = "ConstantExpr"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "PlusExpr"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "TimesExpr"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "NegExpr"]
| +- 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"]

View File

@ -1,10 +1,10 @@
+- CompilationUnit[@PackageName = "com.example.geometry"]
+- CompilationUnit[@PackageName = "com.example.geometry", @declarationsAreInDefaultPackage = "false"]
+- PackageDeclaration[@Name = "com.example.geometry"]
| +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
+- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "com.example.geometry.Shape", @CanonicalName = "com.example.geometry.Shape", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Interface = "false", @Local = "false", @Nested = "false", @PackageName = "com.example.geometry", @PackagePrivate = "false", @Record = "false", @RegularClass = "true", @RegularInterface = "false", @SimpleName = "Shape", @TopLevel = "true", @Visibility = "public"]
+- ModifierList[@EffectiveModifiers = "{public, sealed}", @ExplicitModifiers = "{public, sealed}"]
| +- 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", @RegularInterface = "false", @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[@FullyQualified = "false", @SimpleName = "Circle"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Rectangle"]
| +- ClassOrInterfaceType[@FullyQualified = "false", @SimpleName = "Square"]
| +- 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"]

View File

@ -1,8 +1,8 @@
+- CompilationUnit[@PackageName = "com.example.geometry"]
+- CompilationUnit[@PackageName = "com.example.geometry", @declarationsAreInDefaultPackage = "false"]
+- PackageDeclaration[@Name = "com.example.geometry"]
| +- ModifierList[@EffectiveModifiers = "{}", @ExplicitModifiers = "{}"]
+- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "com.example.geometry.Square", @CanonicalName = "com.example.geometry.Square", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Interface = "false", @Local = "false", @Nested = "false", @PackageName = "com.example.geometry", @PackagePrivate = "false", @Record = "false", @RegularClass = "true", @RegularInterface = "false", @SimpleName = "Square", @TopLevel = "true", @Visibility = "public"]
+- ModifierList[@EffectiveModifiers = "{public, non-sealed}", @ExplicitModifiers = "{public, non-sealed}"]
| +- 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", @RegularInterface = "false", @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[@FullyQualified = "false", @SimpleName = "Shape"]
| +- ClassOrInterfaceType[@ArrayDepth = "0", @ArrayType = "false", @ClassOrInterfaceType = "true", @FullyQualified = "false", @PrimitiveType = "false", @ReferenceToClassSameCompilationUnit = "false", @SimpleName = "Shape", @TypeImage = "Shape"]
+- ClassOrInterfaceBody[@Size = "0"]

View File

@ -1,150 +1,89 @@
+- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = true]
+- TypeDeclaration[]
+- ClassOrInterfaceDeclaration[@Abstract = false, @BinaryName = "PatternsInSwitchLabels", @Default = false, @Final = false, @Image = "PatternsInSwitchLabels", @Interface = false, @Local = false, @Modifiers = 1, @Native = false, @Nested = false, @NonSealed = false, @PackagePrivate = false, @Private = false, @Protected = false, @Public = true, @Sealed = false, @SimpleName = "PatternsInSwitchLabels", @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.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, @ForeachVariable = false, @FormalParameter = true, @Image = "args", @LambdaParameter = false, @LocalVariable = false, @Name = "args", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "args"]
+- Block[@containsComment = false]
+- BlockStatement[@Allocation = false]
| +- 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 = "o", @Volatile = false]
| +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "Object"]
| | +- ReferenceType[@Array = false, @ArrayDepth = 0]
| | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Object", @ReferenceToClassSameCompilationUnit = false]
| +- VariableDeclarator[@Initializer = true, @Name = "o"]
| +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @ForeachVariable = false, @FormalParameter = false, @Image = "o", @LambdaParameter = false, @LocalVariable = true, @Name = "o", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "o"]
| +- VariableInitializer[]
| +- Expression[@StandAlonePrimitive = true]
| +- PrimaryExpression[]
| +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = "123L", @FloatLiteral = false, @Image = "123L", @IntLiteral = false, @LongLiteral = true, @SingleCharacterStringLiteral = false, @StringLiteral = false, @TextBlock = false, @TextBlockContent = "123L", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 123, @ValueAsLong = 123]
+- BlockStatement[@Allocation = false]
| +- 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 = "formatted", @Volatile = 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]
| +- VariableDeclarator[@Initializer = true, @Name = "formatted"]
| +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @ForeachVariable = false, @FormalParameter = false, @Image = "formatted", @LambdaParameter = false, @LocalVariable = true, @Name = "formatted", @PatternBinding = false, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "formatted"]
| +- VariableInitializer[]
| +- Expression[@StandAlonePrimitive = false]
| +- SwitchExpression[]
| +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | +- Name[@Image = "o"]
| +- SwitchLabeledExpression[]
| | +- SwitchLabel[@Default = false]
| | | +- TypePattern[@ParenthesisDepth = 0]
| | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "Integer"]
| | | | +- ReferenceType[@Array = false, @ArrayDepth = 0]
| | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Integer", @ReferenceToClassSameCompilationUnit = false]
| | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @ForeachVariable = false, @FormalParameter = false, @Image = "i", @LambdaParameter = false, @LocalVariable = false, @Name = "i", @PatternBinding = true, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "i"]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Name[@Image = "String.format"]
| | +- PrimarySuffix[@ArgumentCount = 2, @Arguments = true, @ArrayDereference = false]
| | +- Arguments[@ArgumentCount = 2, @Size = 2]
| | +- ArgumentList[@Size = 2]
| | +- Expression[@StandAlonePrimitive = false]
| | | +- PrimaryExpression[]
| | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = ""int %d"", @FloatLiteral = false, @Image = ""int %d"", @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = true, @TextBlock = false, @TextBlockContent = ""int %d"", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | +- Name[@Image = "i"]
| +- SwitchLabeledExpression[]
| | +- SwitchLabel[@Default = false]
| | | +- TypePattern[@ParenthesisDepth = 0]
| | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "Long"]
| | | | +- ReferenceType[@Array = false, @ArrayDepth = 0]
| | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Long", @ReferenceToClassSameCompilationUnit = false]
| | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @ForeachVariable = false, @FormalParameter = false, @Image = "l", @LambdaParameter = false, @LocalVariable = false, @Name = "l", @PatternBinding = true, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "l"]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Name[@Image = "String.format"]
| | +- PrimarySuffix[@ArgumentCount = 2, @Arguments = true, @ArrayDereference = false]
| | +- Arguments[@ArgumentCount = 2, @Size = 2]
| | +- ArgumentList[@Size = 2]
| | +- Expression[@StandAlonePrimitive = false]
| | | +- PrimaryExpression[]
| | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = ""long %d"", @FloatLiteral = false, @Image = ""long %d"", @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = true, @TextBlock = false, @TextBlockContent = ""long %d"", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | +- Name[@Image = "l"]
| +- SwitchLabeledExpression[]
| | +- SwitchLabel[@Default = false]
| | | +- TypePattern[@ParenthesisDepth = 0]
| | | +- Type[@Array = false, @ArrayDepth = 0, @ArrayType = false, @TypeImage = "Double"]
| | | | +- ReferenceType[@Array = false, @ArrayDepth = 0]
| | | | +- ClassOrInterfaceType[@AnonymousClass = false, @Array = false, @ArrayDepth = 0, @Image = "Double", @ReferenceToClassSameCompilationUnit = false]
| | | +- VariableDeclaratorId[@Array = false, @ArrayDepth = 0, @ArrayType = false, @ExceptionBlockParameter = false, @ExplicitReceiverParameter = false, @Field = false, @Final = false, @ForeachVariable = false, @FormalParameter = false, @Image = "d", @LambdaParameter = false, @LocalVariable = false, @Name = "d", @PatternBinding = true, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "d"]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Name[@Image = "String.format"]
| | +- PrimarySuffix[@ArgumentCount = 2, @Arguments = true, @ArrayDereference = false]
| | +- Arguments[@ArgumentCount = 2, @Size = 2]
| | +- ArgumentList[@Size = 2]
| | +- Expression[@StandAlonePrimitive = false]
| | | +- PrimaryExpression[]
| | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = ""double %f"", @FloatLiteral = false, @Image = ""double %f"", @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = true, @TextBlock = false, @TextBlockContent = ""double %f"", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | +- Name[@Image = "d"]
| +- SwitchLabeledExpression[]
| | +- SwitchLabel[@Default = false]
| | | +- TypePattern[@ParenthesisDepth = 0]
| | | +- 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 = false, @ForeachVariable = false, @FormalParameter = false, @Image = "s", @LambdaParameter = false, @LocalVariable = false, @Name = "s", @PatternBinding = true, @ResourceDeclaration = false, @TypeInferred = false, @VariableName = "s"]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Name[@Image = "String.format"]
| | +- PrimarySuffix[@ArgumentCount = 2, @Arguments = true, @ArrayDereference = false]
| | +- Arguments[@ArgumentCount = 2, @Size = 2]
| | +- ArgumentList[@Size = 2]
| | +- Expression[@StandAlonePrimitive = false]
| | | +- PrimaryExpression[]
| | | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | | +- Literal[@CharLiteral = false, @DoubleLiteral = false, @EscapedStringLiteral = ""String %s"", @FloatLiteral = false, @Image = ""String %s"", @IntLiteral = false, @LongLiteral = false, @SingleCharacterStringLiteral = false, @StringLiteral = true, @TextBlock = false, @TextBlockContent = ""String %s"", @ValueAsDouble = NaN, @ValueAsFloat = NaN, @ValueAsInt = 0, @ValueAsLong = 0]
| | +- Expression[@StandAlonePrimitive = false]
| | +- PrimaryExpression[]
| | +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | +- Name[@Image = "s"]
| +- SwitchLabeledExpression[]
| +- SwitchLabel[@Default = true]
| +- Expression[@StandAlonePrimitive = false]
| +- PrimaryExpression[]
| +- PrimaryPrefix[@SuperModifier = false, @ThisModifier = false]
| | +- Name[@Image = "o.toString"]
| +- PrimarySuffix[@ArgumentCount = 0, @Arguments = true, @ArrayDereference = false]
| +- 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 = "formatted"]
+- CompilationUnit[@PackageName = "", @declarationsAreInDefaultPackage = "true"]
+- ClassOrInterfaceDeclaration[@Abstract = "false", @Annotation = "false", @Anonymous = "false", @BinaryName = "PatternsInSwitchLabels", @CanonicalName = "PatternsInSwitchLabels", @EffectiveVisibility = "public", @Enum = "false", @Final = "false", @Image = "PatternsInSwitchLabels", @Interface = "false", @Local = "false", @Native = "false", @Nested = "false", @PackageName = "", @PackagePrivate = "false", @Private = "false", @Protected = "false", @Public = "true", @Record = "false", @RegularClass = "true", @RegularInterface = "false", @SimpleName = "PatternsInSwitchLabels", @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", @MainMethod = "true", @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", @ForLoopVariable = "false", @ForeachVariable = "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 = "3", @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 = "o"]
| +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @Image = "o", @LambdaParameter = "false", @LocalVariable = "true", @Name = "o", @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 = "o", @Visibility = "local", @Volatile = "false"]
| +- NumericLiteral[@Base = "10", @BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @DoubleLiteral = "false", @Expression = "true", @FloatLiteral = "false", @Image = "123L", @IntLiteral = "false", @Integral = "true", @LongLiteral = "true", @NullLiteral = "false", @NumericLiteral = "true", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "false", @ValueAsDouble = "123.0", @ValueAsFloat = "123.0", @ValueAsInt = "123", @ValueAsLong = "123"]
+- 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 = "String", @TypeImage = "String"]
| +- VariableDeclarator[@Initializer = "true", @Name = "formatted"]
| +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @Image = "formatted", @LambdaParameter = "false", @LocalVariable = "true", @Name = "formatted", @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 = "formatted", @Visibility = "local", @Volatile = "false"]
| +- SwitchExpression[@CompileTimeConstant = "false", @DefaultCase = "true", @ExhaustiveEnumSwitch = "false", @Expression = "true", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "o", @Name = "o", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- SwitchArrowBranch[@Default = "false"]
| | +- SwitchLabel[@Default = "false"]
| | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @ParenthesisDepth = "0", @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 = "Integer", @TypeImage = "Integer"]
| | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @Image = "i", @LambdaParameter = "false", @LocalVariable = "false", @Name = "i", @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 = "i", @Visibility = "local", @Volatile = "false"]
| | +- 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 = "2"]
| | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "int %d", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"int %d\"", @IntLiteral = "false", @Length = "6", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"]
| | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "i", @Name = "i", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- SwitchArrowBranch[@Default = "false"]
| | +- SwitchLabel[@Default = "false"]
| | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @ParenthesisDepth = "0", @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 = "Long", @TypeImage = "Long"]
| | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @Image = "l", @LambdaParameter = "false", @LocalVariable = "false", @Name = "l", @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 = "l", @Visibility = "local", @Volatile = "false"]
| | +- 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 = "2"]
| | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "long %d", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"long %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 = "l", @Name = "l", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- SwitchArrowBranch[@Default = "false"]
| | +- SwitchLabel[@Default = "false"]
| | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @ParenthesisDepth = "0", @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 = "Double", @TypeImage = "Double"]
| | | +- VariableDeclaratorId[@Abstract = "false", @ArrayType = "false", @EffectiveVisibility = "local", @EnumConstant = "false", @ExceptionBlockParameter = "false", @Field = "false", @Final = "false", @ForLoopVariable = "false", @ForeachVariable = "false", @FormalParameter = "false", @Image = "d", @LambdaParameter = "false", @LocalVariable = "false", @Name = "d", @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 = "d", @Visibility = "local", @Volatile = "false"]
| | +- 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 = "2"]
| | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "double %f", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"double %f\"", @IntLiteral = "false", @Length = "9", @LongLiteral = "false", @NullLiteral = "false", @NumericLiteral = "false", @ParenthesisDepth = "0", @Parenthesized = "false", @StringLiteral = "true", @TextBlock = "false"]
| | +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "d", @Name = "d", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- SwitchArrowBranch[@Default = "false"]
| | +- SwitchLabel[@Default = "false"]
| | | +- TypePattern[@Abstract = "false", @EffectiveVisibility = "package", @Final = "false", @Native = "false", @PackagePrivate = "true", @ParenthesisDepth = "0", @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", @ForLoopVariable = "false", @ForeachVariable = "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"]
| | +- 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 = "2"]
| | +- StringLiteral[@BooleanLiteral = "false", @CharLiteral = "false", @CompileTimeConstant = "true", @ConstValue = "String %s", @DoubleLiteral = "false", @Empty = "false", @Expression = "true", @FloatLiteral = "false", @Image = "\"String %s\"", @IntLiteral = "false", @Length = "9", @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"]
| +- SwitchArrowBranch[@Default = "true"]
| +- SwitchLabel[@Default = "true"]
| +- MethodCall[@CompileTimeConstant = "false", @Expression = "true", @Image = "toString", @MethodName = "toString", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- VariableAccess[@AccessType = "READ", @CompileTimeConstant = "false", @Expression = "true", @Image = "o", @Name = "o", @ParenthesisDepth = "0", @Parenthesized = "false"]
| +- 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 = "formatted", @Name = "formatted", @ParenthesisDepth = "0", @Parenthesized = "false"]