+- CompilationUnit[@PackageName = ""]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.awt.Button", @ImportedSimpleName = "Button", @ModuleImport = false, @PackageName = "java.awt", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.io.File", @ImportedSimpleName = "File", @ModuleImport = false, @PackageName = "java.io", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.io.FileFilter", @ImportedSimpleName = "FileFilter", @ModuleImport = false, @PackageName = "java.io", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.security.PrivilegedAction", @ImportedSimpleName = "PrivilegedAction", @ModuleImport = false, @PackageName = "java.security", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.util.Comparator", @ImportedSimpleName = "Comparator", @ModuleImport = false, @PackageName = "java.util", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.util.concurrent.Callable", @ImportedSimpleName = "Callable", @ModuleImport = false, @PackageName = "java.util.concurrent", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.util.function.Function", @ImportedSimpleName = "Function", @ModuleImport = false, @PackageName = "java.util.function", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.util.function.IntFunction", @ImportedSimpleName = "IntFunction", @ModuleImport = false, @PackageName = "java.util.function", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.util.function.Supplier", @ImportedSimpleName = "Supplier", @ModuleImport = false, @PackageName = "java.util.function", @Static = false]
   +- ImportDeclaration[@ImportOnDemand = false, @ImportedName = "java.util.stream.Stream", @ImportedSimpleName = "Stream", @ModuleImport = false, @PackageName = "java.util.stream", @Static = false]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "ParserCornerCases18", @CanonicalName = "ParserCornerCases18", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "ParserCornerCases18", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
   |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |  +- ClassBody[@Empty = false, @Size = 30]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "lambdas", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 24, @containsComment = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "java"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "java", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "File"]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "endsWith", @MethodName = "endsWith", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "getName", @MethodName = "getName", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |              +- StringLiteral[@CompileTimeConstant = true, @ConstValue = ".java", @Empty = false, @Image = "\".java\"", @Length = 5, @LiteralText = "\".java\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "java2"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "java2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "endsWith", @MethodName = "endsWith", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "getName", @MethodName = "getName", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |              +- StringLiteral[@CompileTimeConstant = true, @ConstValue = ".java", @Empty = false, @Image = "\".java\"", @Length = 5, @LiteralText = "\".java\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "java3"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "java3", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "endsWith", @MethodName = "endsWith", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "getName", @MethodName = "getName", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |              +- StringLiteral[@CompileTimeConstant = true, @ConstValue = ".java", @Empty = false, @Image = "\".java\"", @Length = 5, @LiteralText = "\".java\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "java4"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "java4", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 1, @Parenthesized = true]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "endsWith", @MethodName = "endsWith", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "getName", @MethodName = "getName", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |              +- StringLiteral[@CompileTimeConstant = true, @ConstValue = ".java", @Empty = false, @Image = "\".java\"", @Length = 5, @LiteralText = "\".java\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- ExpressionStatement[]
   |     |     |  +- MethodCall[@CompileTimeConstant = false, @Image = "forEach", @MethodName = "forEach", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     +- MethodCall[@CompileTimeConstant = false, @Image = "parallel", @MethodName = "parallel", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     |  +- MethodCall[@CompileTimeConstant = false, @Image = "range", @MethodName = "range", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     |  |  +- AmbiguousName[@CompileTimeConstant = false, @Image = "IntStream", @Name = "IntStream", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     |  |  +- ArgumentList[@Empty = false, @Size = 2]
   |     |     |     |  |     +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "0", @IntLiteral = true, @Integral = true, @LiteralText = "0", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 0.0, @ValueAsFloat = 0.0, @ValueAsInt = 0, @ValueAsLong = 0]
   |     |     |     |  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "length", @Name = "length", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     |  |        +- AmbiguousName[@CompileTimeConstant = false, @Image = "array", @Name = "array", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |     +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |        +- LambdaExpression[@Arity = 1, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |           |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |              +- ExpressionStatement[]
   |     |     |                 +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    +- ArrayAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "array", @Name = "array", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    +- MethodCall[@CompileTimeConstant = false, @Image = "apply", @MethodName = "apply", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                       +- AmbiguousName[@CompileTimeConstant = false, @Image = "generator", @Name = "generator", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                       +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                          +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ArrayType[@ArrayDepth = 1]
   |     |     |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |     |  |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |     |  |     +- ArrayTypeDim[@Varargs = false]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "filters"]
   |     |     |     +- VariableId[@ArrayType = true, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "filters", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- ArrayAllocation[@ArrayDepth = 1, @CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- ArrayType[@ArrayDepth = 1]
   |     |     |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |     |        |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |     |        |     +- ArrayTypeDim[@Varargs = false]
   |     |     |        +- ArrayInitializer[@CompileTimeConstant = false, @Length = 3, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |           |  |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "exists", @MethodName = "exists", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |     +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |           |  |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "canRead", @MethodName = "canRead", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |     +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |              |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |              |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |              |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |              +- MethodCall[@CompileTimeConstant = false, @Image = "startsWith", @MethodName = "startsWith", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- MethodCall[@CompileTimeConstant = false, @Image = "getName", @MethodName = "getName", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |                 +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                    +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "q", @Empty = false, @Image = "\"q\"", @Length = 1, @LiteralText = "\"q\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- ExpressionStatement[]
   |     |     |  +- MethodCall[@CompileTimeConstant = false, @Image = "filterFiles", @MethodName = "filterFiles", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |        +- ArrayAllocation[@ArrayDepth = 1, @CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- ArrayType[@ArrayDepth = 1]
   |     |     |           |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |     |           |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |     |           |     +- ArrayTypeDim[@Varargs = false]
   |     |     |           +- ArrayInitializer[@CompileTimeConstant = false, @Length = 3, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |  +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |              |  |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |              |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |              |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |              |  +- MethodCall[@CompileTimeConstant = false, @Image = "exists", @MethodName = "exists", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |     +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |              +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |  +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |              |  |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |              |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |              |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |              |  +- MethodCall[@CompileTimeConstant = false, @Image = "canRead", @MethodName = "canRead", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |     +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |              +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |                 |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |                 |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |                 |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "f", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |                 +- MethodCall[@CompileTimeConstant = false, @Image = "startsWith", @MethodName = "startsWith", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    +- MethodCall[@CompileTimeConstant = false, @Image = "getName", @MethodName = "getName", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "f", @Name = "f", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |                    +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                       +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "q", @Empty = false, @Image = "\"q\"", @Length = 1, @LiteralText = "\"q\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "user"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "user", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodCall[@CompileTimeConstant = false, @Image = "doPrivileged", @MethodName = "doPrivileged", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |           +- LambdaExpression[@Arity = 0, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |              +- MethodCall[@CompileTimeConstant = false, @Image = "getProperty", @MethodName = "getProperty", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |     |                 +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                    +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "user.name", @Empty = false, @Image = "\"user.name\"", @Length = 9, @LiteralText = "\"user.name\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Callable"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "c"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "c", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 0, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |        +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "done", @Empty = false, @Image = "\"done\"", @Length = 4, @LiteralText = "\"done\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "r"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "r", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 0, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |           +- ExpressionStatement[]
   |     |     |              +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |     |                 +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                    +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "done", @Empty = false, @Image = "\"done\"", @Length = 4, @LiteralText = "\"done\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Supplier"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "sup"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "sup", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 0, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |        +- LambdaExpression[@Arity = 0, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |           +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |              +- ExpressionStatement[]
   |     |     |                 +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |     |                    +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                       +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "hi", @Empty = false, @Image = "\"hi\"", @Length = 2, @LiteralText = "\"hi\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- PrimitiveType[@Kind = PrimitiveTypeKind.BOOLEAN]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "flag"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "flag", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- InfixExpression[@CompileTimeConstant = true, @Operator = BinaryOp.GT, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "1", @IntLiteral = true, @Integral = true, @LiteralText = "1", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 1.0, @ValueAsFloat = 1.0, @ValueAsInt = 1, @ValueAsLong = 1]
   |     |     |        +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "2", @IntLiteral = true, @Integral = true, @LiteralText = "2", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 2.0, @ValueAsFloat = 2.0, @ValueAsInt = 2, @ValueAsLong = 2]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Callable"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "c2"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "c2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- ConditionalExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "flag", @Name = "flag", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaExpression[@Arity = 0, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = true, @ParenthesisDepth = 1, @Parenthesized = true]
   |     |     |        |  +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |        |  +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "23", @IntLiteral = true, @Integral = true, @LiteralText = "23", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 23.0, @ValueAsFloat = 23.0, @ValueAsInt = 23, @ValueAsLong = 23]
   |     |     |        +- LambdaExpression[@Arity = 0, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = true, @ParenthesisDepth = 1, @Parenthesized = true]
   |     |     |           +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |           +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "42", @IntLiteral = true, @Integral = true, @LiteralText = "42", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 42.0, @ValueAsFloat = 42.0, @ValueAsInt = 42, @ValueAsLong = 42]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "o"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_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, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- CastExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |     |        +- LambdaExpression[@Arity = 0, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |     |           +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |              +- ExpressionStatement[]
   |     |     |                 +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |     |                    +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                       +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "hi", @Empty = false, @Image = "\"hi\"", @Length = 2, @LiteralText = "\"hi\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     |     +- ExpressionStatement[]
   |     |     |  +- MethodCall[@CompileTimeConstant = false, @Image = "run", @MethodName = "run", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "r1", @Name = "r1", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     |  +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |     |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |     |     |     +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |     +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Comparator"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "comparer"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "comparer", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 2, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 2]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s1", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "compareToIgnoreCase", @MethodName = "compareToIgnoreCase", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "s1", @Name = "s1", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "s2", @Name = "s2", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- ExpressionStatement[]
   |     |     |  +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "comparer", @Name = "comparer", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     +- LambdaExpression[@Arity = 2, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 2]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s1", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "compareToIgnoreCase", @MethodName = "compareToIgnoreCase", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "s1", @Name = "s1", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "s2", @Name = "s2", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Button"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "button"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "button", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Button"]
   |     |     |        +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- ExpressionStatement[]
   |     |     |  +- MethodCall[@CompileTimeConstant = false, @Image = "addActionListener", @MethodName = "addActionListener", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "button", @Name = "button", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |     +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |        +- LambdaExpression[@Arity = 1, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- LambdaParameterList[@Empty = false, @Size = 1]
   |     |     |           |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "e", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |     |              +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |                 +- MethodCall[@CompileTimeConstant = false, @Image = "getModifiers", @MethodName = "getModifiers", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "e", @Name = "e", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                    +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "initialSizeGlobal"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "initialSizeGlobal", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- CastExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |     |        +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.MUL, @ParenthesisDepth = 1, @Parenthesized = true]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "size", @MethodName = "size", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- AmbiguousName[@CompileTimeConstant = false, @Image = "profilingContext.m_profileItems", @Name = "profilingContext.m_profileItems", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           +- InfixExpression[@CompileTimeConstant = true, @Operator = BinaryOp.MUL, @ParenthesisDepth = 1, @Parenthesized = true]
   |     |     |              +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = true, @FloatLiteral = false, @Image = "150.0", @IntLiteral = false, @Integral = false, @LiteralText = "150.0", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 150.0, @ValueAsFloat = 150.0, @ValueAsInt = 150, @ValueAsLong = 150]
   |     |     |              +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = true, @FloatLiteral = false, @Image = "0.30", @IntLiteral = false, @Integral = false, @LiteralText = "0.30", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 0.3, @ValueAsFloat = 0.3, @ValueAsInt = 0, @ValueAsLong = 0]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "BiConsumer"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 2]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "lambda2"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "lambda2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 2, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 2]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |           +- ExpressionStatement[]
   |     |     |              +- UnaryExpression[@CompileTimeConstant = false, @Operator = UnaryOp.POST_INCREMENT, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "BiConsumer"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 2]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "lambda2a"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "lambda2a", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 2, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 2]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |           +- ExpressionStatement[]
   |     |     |              +- UnaryExpression[@CompileTimeConstant = false, @Operator = UnaryOp.POST_INCREMENT, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "TriConsumer"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 3]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Double"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "lambda3"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "lambda3", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- LambdaExpression[@Arity = 3, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- LambdaParameterList[@Empty = false, @Size = 3]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Double"]
   |     |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "d", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |           +- ExpressionStatement[]
   |     |     |              +- AssignmentExpression[@CompileTimeConstant = false, @Compound = true, @Operator = AssignmentOp.ADD_ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "d", @Name = "d", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |                 +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "TriConsumer"]
   |     |        |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 3]
   |     |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Double"]
   |     |        +- VariableDeclarator[@Initializer = true, @Name = "lambda3a"]
   |     |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "lambda3a", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |           +- LambdaExpression[@Arity = 3, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- LambdaParameterList[@Empty = false, @Size = 3]
   |     |              |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |              |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |              |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "s", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |              |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |              |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |              |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |              |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |              |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |              |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "d", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |              +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |                 +- ExpressionStatement[]
   |     |                    +- AssignmentExpression[@CompileTimeConstant = false, @Compound = true, @Operator = AssignmentOp.ADD_ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                       +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "d", @Name = "d", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                       +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- ClassDeclaration[@Abstract = true, @Annotation = false, @Anonymous = false, @BinaryName = "ParserCornerCases18$TriConsumer", @CanonicalName = "ParserCornerCases18.TriConsumer", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = true, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = true, @SimpleName = "TriConsumer", @Static = true, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.ABSTRACT, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  |  +- Annotation[@SimpleName = "FunctionalInterface"]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FunctionalInterface"]
   |     |  +- TypeParameters[@Empty = false, @Size = 3]
   |     |  |  +- TypeParameter[@Image = "A", @Name = "A", @TypeBound = false]
   |     |  |  +- TypeParameter[@Image = "B", @Name = "B", @TypeBound = false]
   |     |  |  +- TypeParameter[@Image = "C", @Name = "C", @TypeBound = false]
   |     |  +- ClassBody[@Empty = false, @Size = 1]
   |     |     +- MethodDeclaration[@Abstract = true, @Arity = 3, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "accept", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |        +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.ABSTRACT), @ExplicitModifiers = ()]
   |     |        +- VoidType[]
   |     |        +- FormalParameters[@Empty = false, @Size = 3]
   |     |           +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |           |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |           |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
   |     |           |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "a", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |           +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |           |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |           |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "B"]
   |     |           |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "b", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |           +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |              +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |              +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "C"]
   |     |              +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "c", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     +- FieldDeclaration[@EffectiveVisibility = Visibility.V_PACKAGE, @Static = false, @Visibility = Visibility.V_PACKAGE]
   |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |  +- VariableDeclarator[@Initializer = true, @Name = "r1"]
   |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = true, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "r1", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     +- LambdaExpression[@Arity = 0, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |        +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |           +- ExpressionStatement[]
   |     |              +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |                 +- ArgumentList[@Empty = false, @Size = 1]
   |     |                    +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "toDoLater", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- LambdaExpression[@Arity = 0, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |           +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |              +- ExpressionStatement[]
   |     |                 +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                    +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                    |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                    |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |                    +- ArgumentList[@Empty = false, @Size = 1]
   |     |                       +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "later", @Empty = false, @Image = "\"later\"", @Length = 5, @LiteralText = "\"later\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PRIVATE, @Final = false, @Name = "doPrivileged", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PRIVATE, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PRIVATE), @ExplicitModifiers = (JModifier.PRIVATE)]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "PrivilegedAction"]
   |     |  |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "action", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "run", @MethodName = "run", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "action", @Name = "action", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- ArgumentList[@Empty = true, @Size = 0]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PRIVATE, @Final = false, @Name = "filterFiles", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PRIVATE, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PRIVATE), @ExplicitModifiers = (JModifier.PRIVATE)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ArrayType[@ArrayDepth = 1]
   |     |  |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "FileFilter"]
   |     |  |     |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |  |     |     +- ArrayTypeDim[@Varargs = false]
   |     |  |     +- VariableId[@ArrayType = true, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "filters", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "comparingByKey", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- TypeParameters[@Empty = false, @Size = 2]
   |     |  |  +- TypeParameter[@Image = "K", @Name = "K", @TypeBound = true]
   |     |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Comparable"]
   |     |  |  |     +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |  |  |        +- WildcardType[@LowerBound = true, @UpperBound = false]
   |     |  |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "K"]
   |     |  |  +- TypeParameter[@Image = "V", @Name = "V", @TypeBound = false]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Comparator"]
   |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |  |     +- ClassType[@FullyQualified = true, @PackageQualifier = "Map", @SimpleName = "Entry"]
   |     |  |        +- TypeArguments[@Diamond = false, @Empty = false, @Size = 2]
   |     |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "K"]
   |     |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "V"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- CastExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- IntersectionType[]
   |     |           |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Comparator"]
   |     |           |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |           |  |     +- ClassType[@FullyQualified = true, @PackageQualifier = "Map", @SimpleName = "Entry"]
   |     |           |  |        +- TypeArguments[@Diamond = false, @Empty = false, @Size = 2]
   |     |           |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "K"]
   |     |           |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "V"]
   |     |           |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Serializable"]
   |     |           +- LambdaExpression[@Arity = 2, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- LambdaParameterList[@Empty = false, @Size = 2]
   |     |              |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |              |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |              |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "c1", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |              |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |              |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |              |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "c2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |              +- MethodCall[@CompileTimeConstant = false, @Image = "compareTo", @MethodName = "compareTo", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 +- MethodCall[@CompileTimeConstant = false, @Image = "getKey", @MethodName = "getKey", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c1", @Name = "c1", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |                 +- ArgumentList[@Empty = false, @Size = 1]
   |     |                    +- MethodCall[@CompileTimeConstant = false, @Image = "getKey", @MethodName = "getKey", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                       +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "c2", @Name = "c2", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                       +- ArgumentList[@Empty = true, @Size = 0]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "methodReferences", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 8, @containsComment = true]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "r"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "r", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = false, @MethodName = "toDoLater", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |     |           +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "r1"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "r1", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = false, @MethodName = "toDoLater", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "pc"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "pc", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |     |        +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "r11"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "r11", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = false, @MethodName = "toDoLater", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "pc", @Name = "pc", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Supplier"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "s"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "s", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = false, @MethodName = "toString", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- SuperExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "r2"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "r2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = false, @MethodName = "staticMethod", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "IntFunction"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |     |  |     +- ArrayType[@ArrayDepth = 1]
   |     |     |  |        +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |     |  |        +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |     |  |           +- ArrayTypeDim[@Varargs = false]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "arrayMaker"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "arrayMaker", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = true, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- ArrayType[@ArrayDepth = 1]
   |     |     |              +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |     |              +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |     |                 +- ArrayTypeDim[@Varargs = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |        +- ArrayType[@ArrayDepth = 1]
   |     |        |  +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |        |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |        |     +- ArrayTypeDim[@Varargs = false]
   |     |        +- VariableDeclarator[@Initializer = true, @Name = "array"]
   |     |           +- VariableId[@ArrayType = true, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "array", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "apply", @MethodName = "apply", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "arrayMaker", @Name = "arrayMaker", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- ArgumentList[@Empty = false, @Size = 1]
   |     |                 +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "10", @IntLiteral = true, @Integral = true, @LiteralText = "10", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 10.0, @ValueAsFloat = 10.0, @ValueAsInt = 10, @ValueAsLong = 10]
   |     +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "ParserCornerCases18$PmdMethodReferenceTest", @CanonicalName = "ParserCornerCases18.PmdMethodReferenceTest", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "PmdMethodReferenceTest", @Static = true, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- ClassBody[@Empty = false, @Size = 3]
   |     |     +- FieldDeclaration[@EffectiveVisibility = Visibility.V_PACKAGE, @Static = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Function"]
   |     |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 2]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |  +- VariableDeclarator[@Initializer = false, @Name = "theFunction"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = true, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "theFunction", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Image = "PmdTest", @Name = "PmdTest", @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @containsComment = false]
   |     |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |     +- ExpressionStatement[]
   |     |     |        +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "theFunction", @Name = "theFunction", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = false, @MethodName = "foo", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |              +- ThisExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PRIVATE, @Final = false, @Name = "foo", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PRIVATE, @Void = false]
   |     |        +- ModifierList[@EffectiveModifiers = (JModifier.PRIVATE), @ExplicitModifiers = (JModifier.PRIVATE)]
   |     |        +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |        +- FormalParameters[@Empty = false, @Size = 1]
   |     |        |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |        |     +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |           +- ReturnStatement[]
   |     |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "staticMethod", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Runnable"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- LambdaExpression[@Arity = 0, @BlockBody = false, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = true, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
   |     |              +- ArgumentList[@Empty = false, @Size = 1]
   |     |                 +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "run", @Empty = false, @Image = "\"run\"", @Length = 3, @LiteralText = "\"run\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "typeAnnotations", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 2, @containsComment = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |  +- VariableDeclarator[@Initializer = true, @Name = "myString"]
   |     |     |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "myString", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |     +- CastExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |     |        |  +- Annotation[@SimpleName = "NonNull"]
   |     |     |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "NonNull"]
   |     |     |        +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "str", @Name = "str", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |     |        +- VariableDeclarator[@Initializer = true, @Name = "o"]
   |     |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_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, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |           +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |              +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "MyObject"]
   |     |              |  +- Annotation[@SimpleName = "Interned"]
   |     |              |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Interned"]
   |     |              +- ArgumentList[@Empty = true, @Size = 0]
   |     +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "ParserCornerCases18$UnmodifiableList", @CanonicalName = "ParserCornerCases18.UnmodifiableList", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "UnmodifiableList", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  +- TypeParameters[@Empty = false, @Size = 1]
   |     |  |  +- TypeParameter[@Image = "T", @Name = "T", @TypeBound = false]
   |     |  +- ImplementsList[@Empty = false, @Size = 1]
   |     |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "List"]
   |     |  |     +- Annotation[@SimpleName = "Readonly"]
   |     |  |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Readonly"]
   |     |  |     +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |  |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
   |     |  |           +- Annotation[@SimpleName = "Readonly"]
   |     |  |              +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Readonly"]
   |     |  +- ClassBody[@Empty = true, @Size = 0]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "monitorTemperature", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- ThrowsList[@Empty = false, @Size = 1]
   |     |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "TemperatureException"]
   |     |  |     +- Annotation[@SimpleName = "Critical"]
   |     |  |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Critical"]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "ParserCornerCases18$X", @CanonicalName = "ParserCornerCases18.X", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "X", @Static = true, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- ClassBody[@Empty = false, @Size = 3]
   |     |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "lambaWithIf", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |     |  +- VoidType[]
   |     |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |     +- ExpressionStatement[]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "count", @MethodName = "count", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "sorted", @MethodName = "sorted", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "of", @MethodName = "of", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Stream"]
   |     |     |           |  |  +- ArgumentList[@Empty = false, @Size = 3]
   |     |     |           |  |     +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "1", @IntLiteral = true, @Integral = true, @LiteralText = "1", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 1.0, @ValueAsFloat = 1.0, @ValueAsInt = 1, @ValueAsLong = 1]
   |     |     |           |  |     +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "2", @IntLiteral = true, @Integral = true, @LiteralText = "2", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 2.0, @ValueAsFloat = 2.0, @ValueAsInt = 2, @ValueAsLong = 2]
   |     |     |           |  |     +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "3", @IntLiteral = true, @Integral = true, @LiteralText = "3", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 3.0, @ValueAsFloat = 3.0, @ValueAsInt = 3, @ValueAsLong = 3]
   |     |     |           |  +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |           |     +- LambdaExpression[@Arity = 2, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = false, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |        +- LambdaParameterList[@Empty = false, @Size = 2]
   |     |     |           |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "a", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = true, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "b", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = true, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        +- Block[@Empty = false, @Size = 3, @containsComment = false]
   |     |     |           |           +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |           |           |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |           |  +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |     |           |           |  +- VariableDeclarator[@Initializer = true, @Name = "x"]
   |     |     |           |           |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "x", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |           |           |     +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.SUB, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        +- MethodCall[@CompileTimeConstant = false, @Image = "hashCode", @MethodName = "hashCode", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "a", @Name = "a", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           |           |        +- MethodCall[@CompileTimeConstant = false, @Image = "hashCode", @MethodName = "hashCode", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |           +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "b", @Name = "b", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |           +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           |           +- IfStatement[@Else = false]
   |     |     |           |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "equals", @MethodName = "equals", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "a", @Name = "a", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |  |  +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |           |           |  |     +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |     |           |           |  |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "X"]
   |     |     |           |           |  |        +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           |           |  +- ExpressionStatement[]
   |     |     |           |           |     +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "x", @Name = "x", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "1", @IntLiteral = true, @Integral = true, @LiteralText = "1", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 1.0, @ValueAsFloat = 1.0, @ValueAsInt = 1, @ValueAsLong = 1]
   |     |     |           |           +- ReturnStatement[]
   |     |     |           |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "x", @Name = "x", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "lambaWithIf2", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |     |  +- VoidType[]
   |     |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |     +- ExpressionStatement[]
   |     |     |        +- MethodCall[@CompileTimeConstant = false, @Image = "count", @MethodName = "count", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- MethodCall[@CompileTimeConstant = false, @Image = "sorted", @MethodName = "sorted", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "of", @MethodName = "of", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Stream"]
   |     |     |           |  |  +- ArgumentList[@Empty = false, @Size = 3]
   |     |     |           |  |     +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "1", @IntLiteral = true, @Integral = true, @LiteralText = "1", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 1.0, @ValueAsFloat = 1.0, @ValueAsInt = 1, @ValueAsLong = 1]
   |     |     |           |  |     +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "2", @IntLiteral = true, @Integral = true, @LiteralText = "2", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 2.0, @ValueAsFloat = 2.0, @ValueAsInt = 2, @ValueAsLong = 2]
   |     |     |           |  |     +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "3", @IntLiteral = true, @Integral = true, @LiteralText = "3", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 3.0, @ValueAsFloat = 3.0, @ValueAsInt = 3, @ValueAsLong = 3]
   |     |     |           |  +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |           |     +- LambdaExpression[@Arity = 2, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |        +- LambdaParameterList[@Empty = false, @Size = 2]
   |     |     |           |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        |  |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |        |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |           |        |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "a", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        |  +- LambdaParameter[@EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Integer"]
   |     |     |           |        |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PACKAGE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = true, @LocalVariable = false, @Name = "b", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PACKAGE]
   |     |     |           |        +- Block[@Empty = false, @Size = 3, @containsComment = false]
   |     |     |           |           +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |     |           |           |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |     |           |           |  +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
   |     |     |           |           |  +- VariableDeclarator[@Initializer = true, @Name = "x"]
   |     |     |           |           |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "x", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |     |           |           |     +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.SUB, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        +- MethodCall[@CompileTimeConstant = false, @Image = "hashCode", @MethodName = "hashCode", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "a", @Name = "a", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        |  +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           |           |        +- MethodCall[@CompileTimeConstant = false, @Image = "hashCode", @MethodName = "hashCode", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |           +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "b", @Name = "b", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |           +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           |           +- IfStatement[@Else = false]
   |     |     |           |           |  +- MethodCall[@CompileTimeConstant = false, @Image = "equals", @MethodName = "equals", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "a", @Name = "a", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |  |  +- ArgumentList[@Empty = false, @Size = 1]
   |     |     |           |           |  |     +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |     |           |           |  |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "X"]
   |     |     |           |           |  |        +- ArgumentList[@Empty = true, @Size = 0]
   |     |     |           |           |  +- ExpressionStatement[]
   |     |     |           |           |     +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "x", @Name = "x", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           |           |        +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "1", @IntLiteral = true, @Integral = true, @LiteralText = "1", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 1.0, @ValueAsFloat = 1.0, @ValueAsInt = 1, @ValueAsLong = 1]
   |     |     |           |           +- ReturnStatement[]
   |     |     |           |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "x", @Name = "x", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |           +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "lambdaWithPropertyAssignment", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |        +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |        +- VoidType[]
   |     |        +- FormalParameters[@Empty = true, @Size = 0]
   |     |        +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |           +- ExpressionStatement[]
   |     |              +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 +- FieldAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "event", @Name = "event", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 |  +- AmbiguousName[@CompileTimeConstant = false, @Image = "object", @Name = "object", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                 +- LambdaExpression[@Arity = 0, @BlockBody = true, @CompileTimeConstant = false, @ExplicitlyTyped = true, @ExpressionBody = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                    +- LambdaParameterList[@Empty = true, @Size = 0]
   |     |                    +- Block[@Empty = false, @Size = 2, @containsComment = true]
   |     |                       +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |                       |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |                       |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Request"]
   |     |                       |  +- VariableDeclarator[@Initializer = true, @Name = "request"]
   |     |                       |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "request", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |                       |     +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |                       |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Request"]
   |     |                       |        +- ArgumentList[@Empty = true, @Size = 0]
   |     |                       +- ExpressionStatement[]
   |     |                          +- AssignmentExpression[@CompileTimeConstant = false, @Compound = false, @Operator = AssignmentOp.ASSIGN, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                             +- FieldAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "id", @Name = "id", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                             |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "request", @Name = "request", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |                             +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "42", @IntLiteral = true, @Integral = true, @LiteralText = "42", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 42.0, @ValueAsFloat = 42.0, @ValueAsInt = 42, @ValueAsLong = 42]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "testWildCardWithAnnotation", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "List"]
   |     |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |  |     +- WildcardType[@LowerBound = false, @UpperBound = true]
   |     |  |        +- Annotation[@SimpleName = "AnnotatedUsage"]
   |     |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "AnnotatedUsage"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "testAnnotationsToArrayElements", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- ArrayType[@ArrayDepth = 1]
   |     |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |     |  |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |  |     +- ArrayTypeDim[@Varargs = false]
   |     |  |        +- Annotation[@SimpleName = "Nullable"]
   |     |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Nullable"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PRIVATE, @Final = false, @Name = "getBytes", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PRIVATE, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PRIVATE), @ExplicitModifiers = (JModifier.PRIVATE)]
   |     |  +- ArrayType[@ArrayDepth = 1]
   |     |  |  +- PrimitiveType[@Kind = PrimitiveTypeKind.BYTE]
   |     |  |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |  |     +- ArrayTypeDim[@Varargs = false]
   |     |  |        +- Annotation[@SimpleName = "Nullable"]
   |     |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Nullable"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "getEnum", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- TypeParameters[@Empty = false, @Size = 1]
   |     |  |  +- TypeParameter[@Image = "T", @Name = "T", @TypeBound = true]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Enum"]
   |     |  |        +- Annotation[@SimpleName = "NonNull"]
   |     |  |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "NonNull"]
   |     |  |        +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
   |     |  |           +- WildcardType[@LowerBound = false, @UpperBound = true]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "getNullableEnum", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- TypeParameters[@Empty = false, @Size = 1]
   |     |  |  +- TypeParameter[@Image = "T", @Name = "T", @TypeBound = false]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
   |     |  |  +- Annotation[@SimpleName = "Nullable"]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Nullable"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "createNonNullArray", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- ArrayType[@ArrayDepth = 1]
   |     |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |     |  |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |  |     +- ArrayTypeDim[@Varargs = false]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- ArrayAllocation[@ArrayDepth = 1, @CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- ArrayType[@ArrayDepth = 1]
   |     |              +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |     |              +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |                 +- ArrayDimExpr[@Varargs = false]
   |     |                    +- Annotation[@SimpleName = "NonNull"]
   |     |                    |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "NonNull"]
   |     |                    +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "0", @IntLiteral = true, @Integral = true, @LiteralText = "0", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 0.0, @ValueAsFloat = 0.0, @ValueAsInt = 0, @ValueAsLong = 0]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "check", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- TypeParameters[@Empty = false, @Size = 1]
   |     |  |  +- TypeParameter[@Image = "T", @Name = "T", @TypeBound = false]
   |     |  +- ArrayType[@ArrayDepth = 2]
   |     |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
   |     |  |  +- ArrayDimensions[@Empty = false, @Size = 2]
   |     |  |     +- ArrayTypeDim[@Varargs = false]
   |     |  |     +- ArrayTypeDim[@Varargs = false]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ArrayType[@ArrayDepth = 2]
   |     |  |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
   |     |  |     |  +- ArrayDimensions[@Empty = false, @Size = 2]
   |     |  |     |     +- ArrayTypeDim[@Varargs = false]
   |     |  |     |     |  +- Annotation[@SimpleName = "Anno"]
   |     |  |     |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Anno"]
   |     |  |     |     +- ArrayTypeDim[@Varargs = false]
   |     |  |     |        +- Annotation[@SimpleName = "Anno"]
   |     |  |     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Anno"]
   |     |  |     +- VariableId[@ArrayType = true, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "arr", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = false, @Size = 2, @containsComment = false]
   |     |     +- IfStatement[@Else = false]
   |     |     |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.EQ, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "arr", @Name = "arr", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |  |  +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     |     +- ThrowStatement[]
   |     |     |        +- ConstructorCall[@AnonymousClass = false, @CompileTimeConstant = false, @DiamondTypeArgs = false, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false, @QualifiedInstanceCreation = false]
   |     |     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "NullPointerException"]
   |     |     |           +- ArgumentList[@Empty = true, @Size = 0]
   |     |     +- ReturnStatement[]
   |     |        +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "arr", @Name = "arr", @ParenthesisDepth = 0, @Parenthesized = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "func", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Function"]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  |  +- ReceiverParameter[]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Main"]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = true]
   |     |     +- ReturnStatement[]
   |     |        +- MethodReference[@CompileTimeConstant = false, @ConstructorReference = true, @MethodName = "new", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |           +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Inner"]
   |     |                 +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Main"]
   |     |                    +- Annotation[@SimpleName = "A"]
   |     |                       +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "max", @Overridden = false, @Static = true, @Varargs = true, @Visibility = Visibility.V_PUBLIC, @Void = false]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC, JModifier.STATIC)]
   |     |  +- PrimitiveType[@Kind = PrimitiveTypeKind.BYTE]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = true, @Varargs = true, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (JModifier.FINAL), @ExplicitModifiers = (JModifier.FINAL)]
   |     |  |     +- ArrayType[@ArrayDepth = 1]
   |     |  |     |  +- PrimitiveType[@Kind = PrimitiveTypeKind.BYTE]
   |     |  |     |  +- ArrayDimensions[@Empty = false, @Size = 1]
   |     |  |     |     +- ArrayTypeDim[@Varargs = true]
   |     |  |     |        +- Annotation[@SimpleName = "NotNull"]
   |     |  |     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "NotNull"]
   |     |  |     +- VariableId[@ArrayType = true, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = true, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "array", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- ReturnStatement[]
   |     |        +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "0", @IntLiteral = true, @Integral = true, @LiteralText = "0", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 0.0, @ValueAsFloat = 0.0, @ValueAsInt = 0, @ValueAsLong = 0]
   |     +- AnnotationTypeDeclaration[@Abstract = true, @Annotation = true, @Anonymous = false, @BinaryName = "ParserCornerCases18$Anno", @CanonicalName = "ParserCornerCases18.Anno", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = true, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "Anno", @Static = true, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.ABSTRACT, JModifier.STATIC), @ExplicitModifiers = ()]
   |     |  |  +- Annotation[@SimpleName = "Retention"]
   |     |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Retention"]
   |     |  |  |  +- AnnotationMemberList[@Empty = false, @Size = 1]
   |     |  |  |     +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = true]
   |     |  |  |        +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "CLASS", @Name = "CLASS", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |  |  |           +- AmbiguousName[@CompileTimeConstant = false, @Image = "RetentionPolicy", @Name = "RetentionPolicy", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |  |  +- Annotation[@SimpleName = "Target"]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Target"]
   |     |  |     +- AnnotationMemberList[@Empty = false, @Size = 1]
   |     |  |        +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = true]
   |     |  |           +- MemberValueArrayInitializer[]
   |     |  |              +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "TYPE_USE", @Name = "TYPE_USE", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |  +- AnnotationTypeBody[@Empty = true, @Size = 0]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PRIVATE, @Final = false, @Name = "testMultiDimArrayWithAnnotations", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PRIVATE, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PRIVATE, JModifier.STATIC), @ExplicitModifiers = (JModifier.PRIVATE, JModifier.STATIC)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
   |     |     +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
   |     |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |     |        +- VariableDeclarator[@Initializer = true, @Name = "x"]
   |     |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "x", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |           +- ArrayAllocation[@ArrayDepth = 3, @CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
   |     |              +- ArrayType[@ArrayDepth = 3]
   |     |                 +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Object"]
   |     |                 +- ArrayDimensions[@Empty = false, @Size = 3]
   |     |                    +- ArrayDimExpr[@Varargs = false]
   |     |                    |  +- Annotation[@SimpleName = "NonNull"]
   |     |                    |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "NonNull"]
   |     |                    |  +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "2", @IntLiteral = true, @Integral = true, @LiteralText = "2", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 2.0, @ValueAsFloat = 2.0, @ValueAsInt = 2, @ValueAsLong = 2]
   |     |                    +- ArrayDimExpr[@Varargs = false]
   |     |                    |  +- Annotation[@SimpleName = "Nullable"]
   |     |                    |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Nullable"]
   |     |                    |  +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "1", @IntLiteral = true, @Integral = true, @LiteralText = "1", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 1.0, @ValueAsFloat = 1.0, @ValueAsInt = 1, @ValueAsLong = 1]
   |     |                    +- ArrayDimExpr[@Varargs = false]
   |     |                       +- Annotation[@SimpleName = "NonNull"]
   |     |                       |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "NonNull"]
   |     |                       +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "3", @IntLiteral = true, @Integral = true, @LiteralText = "3", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 3.0, @ValueAsFloat = 3.0, @ValueAsInt = 3, @ValueAsLong = 3]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "methodWithReceiverParameter", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = true, @Size = 0]
   |     |  |  +- ReceiverParameter[]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "methodWithReceiverAndOtherParameters", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- ReceiverParameter[]
   |     |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "other", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PUBLIC, @Final = false, @Name = "methodWithReceiverParameterWithAnnotation", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  +- VoidType[]
   |     |  +- FormalParameters[@Empty = false, @Size = 1]
   |     |  |  +- ReceiverParameter[]
   |     |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |     |  |  |     +- Annotation[@SimpleName = "AnnotatedUsage"]
   |     |  |  |        +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "AnnotatedUsage"]
   |     |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
   |     |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "String"]
   |     |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "other", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
   |     |  +- Block[@Empty = true, @Size = 0, @containsComment = false]
   |     +- AnnotationTypeDeclaration[@Abstract = true, @Annotation = true, @Anonymous = false, @BinaryName = "ParserCornerCases18$AnnotatedUsage", @CanonicalName = "ParserCornerCases18.AnnotatedUsage", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = true, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = false, @SimpleName = "AnnotatedUsage", @Static = true, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
   |     |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.ABSTRACT, JModifier.STATIC), @ExplicitModifiers = (JModifier.PUBLIC)]
   |     |  |  +- Annotation[@SimpleName = "Target"]
   |     |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Target"]
   |     |  |     +- AnnotationMemberList[@Empty = false, @Size = 1]
   |     |  |        +- MemberValuePair[@Image = "value", @Name = "value", @Shorthand = true]
   |     |  |           +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "TYPE_USE", @Name = "TYPE_USE", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |  |              +- AmbiguousName[@CompileTimeConstant = false, @Image = "ElementType", @Name = "ElementType", @ParenthesisDepth = 0, @Parenthesized = false]
   |     |  +- AnnotationTypeBody[@Empty = true, @Size = 0]
   |     +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "ParserCornerCases18$Inner", @CanonicalName = "ParserCornerCases18.Inner", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "Inner", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
   |        +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |        +- ClassBody[@Empty = false, @Size = 1]
   |           +- ConstructorDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Image = "Inner", @Name = "Inner", @Static = false, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @containsComment = false]
   |              +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
   |              +- FormalParameters[@Empty = true, @Size = 0]
   |              |  +- ReceiverParameter[]
   |              |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "ParserCornerCases18"]
   |              +- Block[@Empty = true, @Size = 0, @containsComment = false]
   +- ClassDeclaration[@Abstract = true, @Annotation = false, @Anonymous = false, @BinaryName = "DefaultIterator", @CanonicalName = "DefaultIterator", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = true, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = true, @SimpleName = "DefaultIterator", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
      +- ModifierList[@EffectiveModifiers = (JModifier.ABSTRACT), @ExplicitModifiers = ()]
      +- TypeParameters[@Empty = false, @Size = 1]
      |  +- TypeParameter[@Image = "E", @Name = "E", @TypeBound = false]
      +- ClassBody[@Empty = false, @Size = 5]
         +- MethodDeclaration[@Abstract = true, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "hasNext", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.ABSTRACT), @ExplicitModifiers = ()]
         |  +- PrimitiveType[@Kind = PrimitiveTypeKind.BOOLEAN]
         |  +- FormalParameters[@Empty = true, @Size = 0]
         +- MethodDeclaration[@Abstract = true, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "next", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = false]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.ABSTRACT), @ExplicitModifiers = ()]
         |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "E"]
         |  +- FormalParameters[@Empty = true, @Size = 0]
         +- MethodDeclaration[@Abstract = true, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "remove", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.ABSTRACT), @ExplicitModifiers = ()]
         |  +- VoidType[]
         |  +- FormalParameters[@Empty = true, @Size = 0]
         +- MethodDeclaration[@Abstract = false, @Arity = 1, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "skip", @Overridden = false, @Static = false, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.DEFAULT), @ExplicitModifiers = (JModifier.DEFAULT)]
         |  +- VoidType[]
         |  +- FormalParameters[@Empty = false, @Size = 1]
         |  |  +- FormalParameter[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @Varargs = false, @Visibility = Visibility.V_LOCAL]
         |  |     +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
         |  |     +- PrimitiveType[@Kind = PrimitiveTypeKind.INT]
         |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = true, @LambdaParameter = false, @LocalVariable = false, @Name = "i", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
         |  +- Block[@Empty = false, @Size = 1, @containsComment = false]
         |     +- ForStatement[]
         |        +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.CONDITIONAL_AND, @ParenthesisDepth = 0, @Parenthesized = false]
         |        |  +- InfixExpression[@CompileTimeConstant = false, @Operator = BinaryOp.GT, @ParenthesisDepth = 0, @Parenthesized = false]
         |        |  |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
         |        |  |  +- NumericLiteral[@Base = 10, @CompileTimeConstant = true, @DoubleLiteral = false, @FloatLiteral = false, @Image = "0", @IntLiteral = true, @Integral = true, @LiteralText = "0", @LongLiteral = false, @ParenthesisDepth = 0, @Parenthesized = false, @ValueAsDouble = 0.0, @ValueAsFloat = 0.0, @ValueAsInt = 0, @ValueAsLong = 0]
         |        |  +- MethodCall[@CompileTimeConstant = false, @Image = "hasNext", @MethodName = "hasNext", @ParenthesisDepth = 0, @Parenthesized = false]
         |        |     +- ArgumentList[@Empty = true, @Size = 0]
         |        +- ForUpdate[]
         |        |  +- StatementExpressionList[@Empty = false, @Size = 1]
         |        |     +- UnaryExpression[@CompileTimeConstant = false, @Operator = UnaryOp.POST_DECREMENT, @ParenthesisDepth = 0, @Parenthesized = false]
         |        |        +- VariableAccess[@AccessType = AccessType.WRITE, @CompileTimeConstant = false, @Image = "i", @Name = "i", @ParenthesisDepth = 0, @Parenthesized = false]
         |        +- ExpressionStatement[]
         |           +- MethodCall[@CompileTimeConstant = false, @Image = "next", @MethodName = "next", @ParenthesisDepth = 0, @Parenthesized = false]
         |              +- ArgumentList[@Empty = true, @Size = 0]
         +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "staticInterfaceMethods", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PUBLIC, @Void = true]
            +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC, JModifier.STATIC), @ExplicitModifiers = (JModifier.STATIC)]
            +- VoidType[]
            +- FormalParameters[@Empty = true, @Size = 0]
            +- Block[@Empty = false, @Size = 1, @containsComment = false]
               +- ExpressionStatement[]
                  +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
                     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
                     |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
                     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
                     +- ArgumentList[@Empty = false, @Size = 1]
                        +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "", @Empty = true, @Image = "\"\"", @Length = 0, @LiteralText = "\"\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
