+- CompilationUnit[]
   +- ImportDeclaration[]
   +- ImportDeclaration[]
   +- ImportDeclaration[]
   +- ImportDeclaration[]
   +- ClassDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables"]
      +- ModifierList[]
      +- ClassBody[]
         +- RecordDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |  +- ModifierList[]
         |  +- RecordComponentList[]
         |  |  +- RecordComponent[@TypeMirror = "int"]
         |  |  |  +- ModifierList[]
         |  |  |  +- PrimitiveType[@TypeMirror = "int"]
         |  |  |  +- VariableId[@Name = "x", @TypeMirror = "int"]
         |  |  +- RecordComponent[@TypeMirror = "int"]
         |  |     +- ModifierList[]
         |  |     +- PrimitiveType[@TypeMirror = "int"]
         |  |     +- VariableId[@Name = "y", @TypeMirror = "int"]
         |  +- RecordBody[]
         +- EnumDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |  +- ModifierList[]
         |  +- EnumBody[]
         |     +- EnumConstant[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Color.new() -> Jep456_UnamedPatternsAndVariables$Color", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color", @Unchecked = false, @VarargsCall = false]
         |     |  +- ModifierList[]
         |     |  +- VariableId[@Name = "RED", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     +- EnumConstant[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Color.new() -> Jep456_UnamedPatternsAndVariables$Color", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color", @Unchecked = false, @VarargsCall = false]
         |     |  +- ModifierList[]
         |     |  +- VariableId[@Name = "GREEN", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     +- EnumConstant[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Color.new() -> Jep456_UnamedPatternsAndVariables$Color", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color", @Unchecked = false, @VarargsCall = false]
         |        +- ModifierList[]
         |        +- VariableId[@Name = "BLUE", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         +- RecordDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |  +- ModifierList[]
         |  +- RecordComponentList[]
         |  |  +- RecordComponent[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |  |  |  +- ModifierList[]
         |  |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |  |  |  +- VariableId[@Name = "p", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |  |  +- RecordComponent[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |  |     +- ModifierList[]
         |  |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |  |     +- VariableId[@Name = "c", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |  +- RecordBody[]
         +- MethodDeclaration[@Name = "unnamedPatterns1"]
         |  +- ModifierList[]
         |  +- VoidType[@TypeMirror = "void"]
         |  +- FormalParameters[]
         |  +- Block[]
         |     +- LocalVariableDeclaration[]
         |     |  +- ModifierList[]
         |     |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |     |  +- VariableDeclarator[]
         |     |     +- VariableId[@Name = "r", @TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |     |     +- ConstructorCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$ColoredPoint.new(Jep456_UnamedPatternsAndVariables$Point, Jep456_UnamedPatternsAndVariables$Color) -> Jep456_UnamedPatternsAndVariables$ColoredPoint", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint", @Unchecked = false, @VarargsCall = false]
         |     |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |     |        +- ArgumentList[]
         |     |           +- ConstructorCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Point.new(int, int) -> Jep456_UnamedPatternsAndVariables$Point", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point", @Unchecked = false, @VarargsCall = false]
         |     |           |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |           |  +- ArgumentList[]
         |     |           |     +- NumericLiteral[@TypeMirror = "int"]
         |     |           |     +- NumericLiteral[@TypeMirror = "int"]
         |     |           +- FieldAccess[@Name = "GREEN", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     |              +- TypeExpression[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     |                 +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     +- IfStatement[]
         |     |  +- InfixExpression[@TypeMirror = "boolean"]
         |     |  |  +- VariableAccess[@Name = "r", @TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |     |  |  +- PatternExpression[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |     |  |     +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |     |  |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |     |  |        +- PatternList[]
         |     |  |           +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |  |           |  +- ModifierList[]
         |     |  |           |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |  |           |  +- VariableId[@Name = "p", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |  |           +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     |  |              +- ModifierList[]
         |     |  |              +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     |  |              +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |     |  +- Block[]
         |     |     +- ExpressionStatement[]
         |     |        +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(java.lang.String) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |           +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
         |     |           |  +- TypeExpression[@TypeMirror = "java.lang.System"]
         |     |           |     +- ClassType[@TypeMirror = "java.lang.System"]
         |     |           +- ArgumentList[]
         |     |              +- InfixExpression[@TypeMirror = "java.lang.String"]
         |     |                 +- InfixExpression[@TypeMirror = "java.lang.String"]
         |     |                 |  +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Point.x() -> int", @MethodName = "x", @TypeMirror = "int", @Unchecked = false, @VarargsCall = false]
         |     |                 |  |  +- VariableAccess[@Name = "p", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |                 |  |  +- ArgumentList[]
         |     |                 |  +- StringLiteral[@TypeMirror = "java.lang.String"]
         |     |                 +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Point.y() -> int", @MethodName = "y", @TypeMirror = "int", @Unchecked = false, @VarargsCall = false]
         |     |                    +- VariableAccess[@Name = "p", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |                    +- ArgumentList[]
         |     +- IfStatement[]
         |        +- InfixExpression[@TypeMirror = "boolean"]
         |        |  +- VariableAccess[@Name = "r", @TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |        |  +- PatternExpression[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |        |     +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |        |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ColoredPoint"]
         |        |        +- PatternList[]
         |        |           +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |        |           |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |        |           |  +- PatternList[]
         |        |           |     +- TypePattern[@TypeMirror = "int"]
         |        |           |     |  +- ModifierList[]
         |        |           |     |  +- PrimitiveType[@TypeMirror = "int"]
         |        |           |     |  +- VariableId[@Name = "x", @TypeMirror = "int"]
         |        |           |     +- TypePattern[@TypeMirror = "int"]
         |        |           |        +- ModifierList[]
         |        |           |        +- PrimitiveType[@TypeMirror = "int"]
         |        |           |        +- VariableId[@Name = "y", @TypeMirror = "int"]
         |        |           +- UnnamedPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Color"]
         |        +- Block[]
         |           +- ExpressionStatement[]
         |              +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(java.lang.String) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |                 +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
         |                 |  +- TypeExpression[@TypeMirror = "java.lang.System"]
         |                 |     +- ClassType[@TypeMirror = "java.lang.System"]
         |                 +- ArgumentList[]
         |                    +- InfixExpression[@TypeMirror = "java.lang.String"]
         |                       +- InfixExpression[@TypeMirror = "java.lang.String"]
         |                       |  +- VariableAccess[@Name = "x", @TypeMirror = "int"]
         |                       |  +- StringLiteral[@TypeMirror = "java.lang.String"]
         |                       +- VariableAccess[@Name = "y", @TypeMirror = "int"]
         +- ClassDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Ball"]
         |  +- ModifierList[]
         |  +- PermitsList[]
         |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |  +- ClassBody[]
         +- ClassDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |  +- ModifierList[]
         |  +- ExtendsList[]
         |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Ball"]
         |  +- ClassBody[]
         +- ClassDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |  +- ModifierList[]
         |  +- ExtendsList[]
         |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Ball"]
         |  +- ClassBody[]
         +- ClassDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |  +- ModifierList[]
         |  +- ExtendsList[]
         |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Ball"]
         |  +- ClassBody[]
         +- RecordDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<T extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |  +- ModifierList[]
         |  +- TypeParameters[]
         |  |  +- TypeParameter[@TypeMirror = "T"]
         |  |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Ball"]
         |  +- RecordComponentList[]
         |  |  +- RecordComponent[@TypeMirror = "T"]
         |  |     +- ModifierList[]
         |  |     +- ClassType[@TypeMirror = "T"]
         |  |     +- VariableId[@Name = "content", @TypeMirror = "T"]
         |  +- RecordBody[]
         +- MethodDeclaration[@Name = "unnamedPatterns2"]
         |  +- ModifierList[]
         |  +- VoidType[@TypeMirror = "void"]
         |  +- FormalParameters[]
         |  +- Block[]
         |     +- LocalVariableDeclaration[]
         |     |  +- ModifierList[]
         |     |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  |  +- TypeArguments[]
         |     |  |     +- WildcardType[@TypeMirror = "? extends Jep456_UnamedPatternsAndVariables#Ball"]
         |     |  |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Ball"]
         |     |  +- VariableDeclarator[]
         |     |     +- VariableId[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |     +- ConstructorCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Box<Jep456_UnamedPatternsAndVariables#RedBall>.new(Jep456_UnamedPatternsAndVariables#RedBall) -> Jep456_UnamedPatternsAndVariables$Box<Jep456_UnamedPatternsAndVariables#RedBall>", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<Jep456_UnamedPatternsAndVariables#RedBall>", @Unchecked = false, @VarargsCall = false]
         |     |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |        |  +- TypeArguments[]
         |     |        +- ArgumentList[]
         |     |           +- ConstructorCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables#RedBall.new() -> Jep456_UnamedPatternsAndVariables#RedBall", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall", @Unchecked = false, @VarargsCall = false]
         |     |              +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |     |              +- ArgumentList[]
         |     +- SwitchStatement[]
         |     |  +- VariableAccess[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  +- SwitchArrowBranch[]
         |     |  |  +- SwitchLabel[]
         |     |  |  |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  |  |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |  |  |     +- PatternList[]
         |     |  |  |        +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |     |  |  |           +- ModifierList[]
         |     |  |  |           +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |     |  |  |           +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |     |  |  +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.processBox(Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>) -> void", @MethodName = "processBox", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |  |     +- ArgumentList[]
         |     |  |        +- VariableAccess[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  +- SwitchArrowBranch[]
         |     |  |  +- SwitchLabel[]
         |     |  |  |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  |  |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |  |  |     +- PatternList[]
         |     |  |  |        +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |     |  |  |           +- ModifierList[]
         |     |  |  |           +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |     |  |  |           +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |     |  |  +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.processBox(Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>) -> void", @MethodName = "processBox", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |  |     +- ArgumentList[]
         |     |  |        +- VariableAccess[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  +- SwitchArrowBranch[]
         |     |     +- SwitchLabel[]
         |     |     |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |     |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |     |     +- PatternList[]
         |     |     |        +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |     |     |           +- ModifierList[]
         |     |     |           +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |     |     |           +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |     |     +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.stopProcessing() -> void", @MethodName = "stopProcessing", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |        +- ArgumentList[]
         |     +- SwitchStatement[]
         |     |  +- VariableAccess[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  +- SwitchArrowBranch[]
         |     |  |  +- SwitchLabel[]
         |     |  |  |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  |  |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |  |  |  |  +- PatternList[]
         |     |  |  |  |     +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |     |  |  |  |        +- ModifierList[]
         |     |  |  |  |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |     |  |  |  |        +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |     |  |  |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  |  |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |  |  |     +- PatternList[]
         |     |  |  |        +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |     |  |  |           +- ModifierList[]
         |     |  |  |           +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |     |  |  |           +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |     |  |  +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.processBox(Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>) -> void", @MethodName = "processBox", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |  |     +- ArgumentList[]
         |     |  |        +- VariableAccess[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  +- SwitchArrowBranch[]
         |     |  |  +- SwitchLabel[]
         |     |  |  |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |  |  |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |  |  |     +- PatternList[]
         |     |  |  |        +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |     |  |  |           +- ModifierList[]
         |     |  |  |           +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |     |  |  |           +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#GreenBall"]
         |     |  |  +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.stopProcessing() -> void", @MethodName = "stopProcessing", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |  |     +- ArgumentList[]
         |     |  +- SwitchArrowBranch[]
         |     |     +- SwitchLabel[]
         |     |     |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |     |     |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |     |     |     +- PatternList[]
         |     |     |        +- UnnamedPattern[@TypeMirror = "capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball"]
         |     |     +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.pickAnotherBox() -> void", @MethodName = "pickAnotherBox", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |        +- ArgumentList[]
         |     +- LocalVariableDeclaration[]
         |     |  +- ModifierList[]
         |     |  +- PrimitiveType[@TypeMirror = "int"]
         |     |  +- VariableDeclarator[]
         |     |     +- VariableId[@Name = "x", @TypeMirror = "int"]
         |     |     +- NumericLiteral[@TypeMirror = "int"]
         |     +- SwitchStatement[]
         |        +- VariableAccess[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |        +- SwitchArrowBranch[]
         |        |  +- SwitchLabel[]
         |        |  |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |        |  |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |        |  |  |  +- PatternList[]
         |        |  |  |     +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |        |  |  |        +- ModifierList[]
         |        |  |  |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |        |  |  |        +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#RedBall"]
         |        |  |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |        |  |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |        |  |  |  +- PatternList[]
         |        |  |  |     +- TypePattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |        |  |  |        +- ModifierList[]
         |        |  |  |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |        |  |  |        +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#BlueBall"]
         |        |  |  +- Guard[]
         |        |  |     +- InfixExpression[@TypeMirror = "boolean"]
         |        |  |        +- VariableAccess[@Name = "x", @TypeMirror = "int"]
         |        |  |        +- NumericLiteral[@TypeMirror = "int"]
         |        |  +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.processBox(Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>) -> void", @MethodName = "processBox", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |        |     +- ArgumentList[]
         |        |        +- VariableAccess[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |        +- SwitchArrowBranch[]
         |           +- SwitchLabel[]
         |           |  +- RecordPattern[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |           |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box"]
         |           |     +- PatternList[]
         |           |        +- UnnamedPattern[@TypeMirror = "capture#... of ? extends Jep456_UnamedPatternsAndVariables#Ball"]
         |           +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.pickAnotherBox() -> void", @MethodName = "pickAnotherBox", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |              +- ArgumentList[]
         +- MethodDeclaration[@Name = "processBox"]
         |  +- ModifierList[]
         |  +- VoidType[@TypeMirror = "void"]
         |  +- FormalParameters[]
         |  |  +- FormalParameter[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |  |     +- ModifierList[]
         |  |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |  |     |  +- TypeArguments[]
         |  |     |     +- WildcardType[@TypeMirror = "? extends Jep456_UnamedPatternsAndVariables#Ball"]
         |  |     |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Ball"]
         |  |     +- VariableId[@Name = "b", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Box<? extends Jep456_UnamedPatternsAndVariables#Ball>"]
         |  +- Block[]
         +- MethodDeclaration[@Name = "stopProcessing"]
         |  +- ModifierList[]
         |  +- VoidType[@TypeMirror = "void"]
         |  +- FormalParameters[]
         |  +- Block[]
         +- MethodDeclaration[@Name = "pickAnotherBox"]
         |  +- ModifierList[]
         |  +- VoidType[@TypeMirror = "void"]
         |  +- FormalParameters[]
         |  +- Block[]
         +- ClassDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Order"]
         |  +- ModifierList[]
         |  +- ClassBody[]
         +- FieldDeclaration[]
         |  +- ModifierList[]
         |  +- PrimitiveType[@TypeMirror = "int"]
         |  +- VariableDeclarator[]
         |     +- VariableId[@Name = "LIMIT", @TypeMirror = "int"]
         |     +- NumericLiteral[@TypeMirror = "int"]
         +- MethodDeclaration[@Name = "sideEffect"]
         |  +- ModifierList[]
         |  +- PrimitiveType[@TypeMirror = "int"]
         |  +- FormalParameters[]
         |  +- Block[]
         |     +- ReturnStatement[]
         |        +- NumericLiteral[@TypeMirror = "int"]
         +- MethodDeclaration[@Name = "unnamedVariables"]
         |  +- ModifierList[]
         |  +- VoidType[@TypeMirror = "void"]
         |  +- FormalParameters[]
         |  |  +- FormalParameter[@TypeMirror = "java.util.List<Jep456_UnamedPatternsAndVariables#Order>"]
         |  |     +- ModifierList[]
         |  |     +- ClassType[@TypeMirror = "java.util.List<Jep456_UnamedPatternsAndVariables#Order>"]
         |  |     |  +- TypeArguments[]
         |  |     |     +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Order"]
         |  |     +- VariableId[@Name = "orders", @TypeMirror = "java.util.List<Jep456_UnamedPatternsAndVariables#Order>"]
         |  +- Block[]
         |     +- LocalVariableDeclaration[]
         |     |  +- ModifierList[]
         |     |  +- PrimitiveType[@TypeMirror = "int"]
         |     |  +- VariableDeclarator[]
         |     |     +- VariableId[@Name = "total", @TypeMirror = "int"]
         |     |     +- NumericLiteral[@TypeMirror = "int"]
         |     +- ForeachStatement[]
         |     |  +- LocalVariableDeclaration[]
         |     |  |  +- ModifierList[]
         |     |  |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables#Order"]
         |     |  |  +- VariableDeclarator[]
         |     |  |     +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables#Order"]
         |     |  +- VariableAccess[@Name = "orders", @TypeMirror = "java.util.List<Jep456_UnamedPatternsAndVariables#Order>"]
         |     |  +- Block[]
         |     |     +- IfStatement[]
         |     |        +- InfixExpression[@TypeMirror = "boolean"]
         |     |        |  +- VariableAccess[@Name = "total", @TypeMirror = "int"]
         |     |        |  +- VariableAccess[@Name = "LIMIT", @TypeMirror = "int"]
         |     |        +- Block[]
         |     |           +- ExpressionStatement[]
         |     |              +- UnaryExpression[@TypeMirror = "int"]
         |     |                 +- VariableAccess[@Name = "total", @TypeMirror = "int"]
         |     +- ExpressionStatement[]
         |     |  +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(java.lang.String) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |     +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
         |     |     |  +- TypeExpression[@TypeMirror = "java.lang.System"]
         |     |     |     +- ClassType[@TypeMirror = "java.lang.System"]
         |     |     +- ArgumentList[]
         |     |        +- InfixExpression[@TypeMirror = "java.lang.String"]
         |     |           +- StringLiteral[@TypeMirror = "java.lang.String"]
         |     |           +- VariableAccess[@Name = "total", @TypeMirror = "int"]
         |     +- ForStatement[]
         |     |  +- ForInit[]
         |     |  |  +- LocalVariableDeclaration[]
         |     |  |     +- ModifierList[]
         |     |  |     +- PrimitiveType[@TypeMirror = "int"]
         |     |  |     +- VariableDeclarator[]
         |     |  |     |  +- VariableId[@Name = "i", @TypeMirror = "int"]
         |     |  |     |  +- NumericLiteral[@TypeMirror = "int"]
         |     |  |     +- VariableDeclarator[]
         |     |  |        +- VariableId[@Name = "_", @TypeMirror = "int"]
         |     |  |        +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables.sideEffect() -> int", @MethodName = "sideEffect", @TypeMirror = "int", @Unchecked = false, @VarargsCall = false]
         |     |  |           +- ArgumentList[]
         |     |  +- InfixExpression[@TypeMirror = "boolean"]
         |     |  |  +- VariableAccess[@Name = "i", @TypeMirror = "int"]
         |     |  |  +- NumericLiteral[@TypeMirror = "int"]
         |     |  +- ForUpdate[]
         |     |  |  +- StatementExpressionList[]
         |     |  |     +- UnaryExpression[@TypeMirror = "int"]
         |     |  |        +- VariableAccess[@Name = "i", @TypeMirror = "int"]
         |     |  +- Block[]
         |     |     +- ExpressionStatement[]
         |     |        +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(int) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
         |     |           +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
         |     |           |  +- TypeExpression[@TypeMirror = "java.lang.System"]
         |     |           |     +- ClassType[@TypeMirror = "java.lang.System"]
         |     |           +- ArgumentList[]
         |     |              +- VariableAccess[@Name = "i", @TypeMirror = "int"]
         |     +- LocalVariableDeclaration[]
         |     |  +- ModifierList[]
         |     |  +- ClassType[@TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |     |  |  +- TypeArguments[]
         |     |  |     +- ClassType[@TypeMirror = "java.lang.Integer"]
         |     |  +- VariableDeclarator[]
         |     |     +- VariableId[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |     |     +- ConstructorCall[@Failed = false, @Function = "java.util.ArrayDeque<java.lang.Integer>.new() -> java.util.ArrayDeque<java.lang.Integer>", @MethodName = "new", @TypeMirror = "java.util.ArrayDeque<java.lang.Integer>", @Unchecked = false, @VarargsCall = false]
         |     |        +- ClassType[@TypeMirror = "java.util.ArrayDeque"]
         |     |        |  +- TypeArguments[]
         |     |        +- ArgumentList[]
         |     +- WhileStatement[]
         |     |  +- InfixExpression[@TypeMirror = "boolean"]
         |     |  |  +- MethodCall[@Failed = false, @Function = "java.util.Collection<java.lang.Integer>.size() -> int", @MethodName = "size", @TypeMirror = "int", @Unchecked = false, @VarargsCall = false]
         |     |  |  |  +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |     |  |  |  +- ArgumentList[]
         |     |  |  +- NumericLiteral[@TypeMirror = "int"]
         |     |  +- Block[]
         |     |     +- LocalVariableDeclaration[]
         |     |     |  +- ModifierList[]
         |     |     |  +- PrimitiveType[@TypeMirror = "int"]
         |     |     |  +- VariableDeclarator[]
         |     |     |     +- VariableId[@Name = "x", @TypeMirror = "int"]
         |     |     |     +- MethodCall[@Failed = false, @Function = "java.util.Queue<java.lang.Integer>.remove() -> java.lang.Integer", @MethodName = "remove", @TypeMirror = "java.lang.Integer", @Unchecked = false, @VarargsCall = false]
         |     |     |        +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |     |     |        +- ArgumentList[]
         |     |     +- LocalVariableDeclaration[]
         |     |     |  +- ModifierList[]
         |     |     |  +- PrimitiveType[@TypeMirror = "int"]
         |     |     |  +- VariableDeclarator[]
         |     |     |     +- VariableId[@Name = "y", @TypeMirror = "int"]
         |     |     |     +- MethodCall[@Failed = false, @Function = "java.util.Queue<java.lang.Integer>.remove() -> java.lang.Integer", @MethodName = "remove", @TypeMirror = "java.lang.Integer", @Unchecked = false, @VarargsCall = false]
         |     |     |        +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |     |     |        +- ArgumentList[]
         |     |     +- LocalVariableDeclaration[]
         |     |     |  +- ModifierList[]
         |     |     |  +- PrimitiveType[@TypeMirror = "int"]
         |     |     |  +- VariableDeclarator[]
         |     |     |     +- VariableId[@Name = "_", @TypeMirror = "int"]
         |     |     |     +- MethodCall[@Failed = false, @Function = "java.util.Queue<java.lang.Integer>.remove() -> java.lang.Integer", @MethodName = "remove", @TypeMirror = "java.lang.Integer", @Unchecked = false, @VarargsCall = false]
         |     |     |        +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |     |     |        +- ArgumentList[]
         |     |     +- LocalVariableDeclaration[]
         |     |        +- ModifierList[]
         |     |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |        +- VariableDeclarator[]
         |     |           +- VariableId[@Name = "p", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |           +- ConstructorCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Point.new(int, int) -> Jep456_UnamedPatternsAndVariables$Point", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point", @Unchecked = false, @VarargsCall = false]
         |     |              +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |     |              +- ArgumentList[]
         |     |                 +- VariableAccess[@Name = "x", @TypeMirror = "int"]
         |     |                 +- VariableAccess[@Name = "y", @TypeMirror = "int"]
         |     +- WhileStatement[]
         |        +- InfixExpression[@TypeMirror = "boolean"]
         |        |  +- MethodCall[@Failed = false, @Function = "java.util.Collection<java.lang.Integer>.size() -> int", @MethodName = "size", @TypeMirror = "int", @Unchecked = false, @VarargsCall = false]
         |        |  |  +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |        |  |  +- ArgumentList[]
         |        |  +- NumericLiteral[@TypeMirror = "int"]
         |        +- Block[]
         |           +- LocalVariableDeclaration[]
         |           |  +- ModifierList[]
         |           |  +- VariableDeclarator[]
         |           |     +- VariableId[@Name = "x", @TypeMirror = "java.lang.Integer"]
         |           |     +- MethodCall[@Failed = false, @Function = "java.util.Queue<java.lang.Integer>.remove() -> java.lang.Integer", @MethodName = "remove", @TypeMirror = "java.lang.Integer", @Unchecked = false, @VarargsCall = false]
         |           |        +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |           |        +- ArgumentList[]
         |           +- LocalVariableDeclaration[]
         |           |  +- ModifierList[]
         |           |  +- VariableDeclarator[]
         |           |     +- VariableId[@Name = "_", @TypeMirror = "java.lang.Integer"]
         |           |     +- MethodCall[@Failed = false, @Function = "java.util.Queue<java.lang.Integer>.remove() -> java.lang.Integer", @MethodName = "remove", @TypeMirror = "java.lang.Integer", @Unchecked = false, @VarargsCall = false]
         |           |        +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |           |        +- ArgumentList[]
         |           +- LocalVariableDeclaration[]
         |           |  +- ModifierList[]
         |           |  +- VariableDeclarator[]
         |           |     +- VariableId[@Name = "_", @TypeMirror = "java.lang.Integer"]
         |           |     +- MethodCall[@Failed = false, @Function = "java.util.Queue<java.lang.Integer>.remove() -> java.lang.Integer", @MethodName = "remove", @TypeMirror = "java.lang.Integer", @Unchecked = false, @VarargsCall = false]
         |           |        +- VariableAccess[@Name = "q", @TypeMirror = "java.util.Queue<java.lang.Integer>"]
         |           |        +- ArgumentList[]
         |           +- LocalVariableDeclaration[]
         |              +- ModifierList[]
         |              +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |              +- VariableDeclarator[]
         |                 +- VariableId[@Name = "p", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |                 +- ConstructorCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$Point.new(int, int) -> Jep456_UnamedPatternsAndVariables$Point", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$Point", @Unchecked = false, @VarargsCall = false]
         |                    +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$Point"]
         |                    +- ArgumentList[]
         |                       +- VariableAccess[@Name = "x", @TypeMirror = "java.lang.Integer"]
         |                       +- NumericLiteral[@TypeMirror = "int"]
         +- ClassDeclaration[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext"]
         |  +- ModifierList[]
         |  +- ImplementsList[]
         |  |  +- ClassType[@TypeMirror = "java.lang.AutoCloseable"]
         |  +- ClassBody[]
         |     +- MethodDeclaration[@Name = "close"]
         |     |  +- ModifierList[]
         |     |  |  +- Annotation[@TypeMirror = "java.lang.Override"]
         |     |  |     +- ClassType[@TypeMirror = "java.lang.Override"]
         |     |  +- VoidType[@TypeMirror = "void"]
         |     |  +- FormalParameters[]
         |     |  +- Block[]
         |     +- MethodDeclaration[@Name = "acquire"]
         |        +- ModifierList[]
         |        +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext"]
         |        +- FormalParameters[]
         |        +- Block[]
         |           +- ReturnStatement[]
         |              +- ConstructorCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$ScopedContext.new() -> Jep456_UnamedPatternsAndVariables$ScopedContext", @MethodName = "new", @TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext", @Unchecked = false, @VarargsCall = false]
         |                 +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext"]
         |                 +- ArgumentList[]
         +- MethodDeclaration[@Name = "unusedVariables2"]
            +- ModifierList[]
            +- VoidType[@TypeMirror = "void"]
            +- FormalParameters[]
            +- Block[]
               +- TryStatement[]
               |  +- ResourceList[]
               |  |  +- Resource[]
               |  |     +- LocalVariableDeclaration[]
               |  |        +- ModifierList[]
               |  |        +- VariableDeclarator[]
               |  |           +- VariableId[@Name = "_", @TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext"]
               |  |           +- MethodCall[@Failed = false, @Function = "Jep456_UnamedPatternsAndVariables$ScopedContext.acquire() -> Jep456_UnamedPatternsAndVariables$ScopedContext", @MethodName = "acquire", @TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext", @Unchecked = false, @VarargsCall = false]
               |  |              +- TypeExpression[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext"]
               |  |              |  +- ClassType[@TypeMirror = "Jep456_UnamedPatternsAndVariables$ScopedContext"]
               |  |              +- ArgumentList[]
               |  +- Block[]
               +- LocalVariableDeclaration[]
               |  +- ModifierList[]
               |  +- ClassType[@TypeMirror = "java.lang.String"]
               |  +- VariableDeclarator[]
               |     +- VariableId[@Name = "s", @TypeMirror = "java.lang.String"]
               |     +- StringLiteral[@TypeMirror = "java.lang.String"]
               +- TryStatement[]
               |  +- Block[]
               |  |  +- LocalVariableDeclaration[]
               |  |  |  +- ModifierList[]
               |  |  |  +- PrimitiveType[@TypeMirror = "int"]
               |  |  |  +- VariableDeclarator[]
               |  |  |     +- VariableId[@Name = "i", @TypeMirror = "int"]
               |  |  |     +- MethodCall[@Failed = false, @Function = "java.lang.Integer.parseInt(java.lang.String) -> int", @MethodName = "parseInt", @TypeMirror = "int", @Unchecked = false, @VarargsCall = false]
               |  |  |        +- TypeExpression[@TypeMirror = "java.lang.Integer"]
               |  |  |        |  +- ClassType[@TypeMirror = "java.lang.Integer"]
               |  |  |        +- ArgumentList[]
               |  |  |           +- VariableAccess[@Name = "s", @TypeMirror = "java.lang.String"]
               |  |  +- ExpressionStatement[]
               |  |     +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(int) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
               |  |        +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
               |  |        |  +- TypeExpression[@TypeMirror = "java.lang.System"]
               |  |        |     +- ClassType[@TypeMirror = "java.lang.System"]
               |  |        +- ArgumentList[]
               |  |           +- VariableAccess[@Name = "i", @TypeMirror = "int"]
               |  +- CatchClause[]
               |  |  +- CatchParameter[]
               |  |  |  +- ModifierList[]
               |  |  |  +- ClassType[@TypeMirror = "java.lang.NumberFormatException"]
               |  |  |  +- VariableId[@Name = "_", @TypeMirror = "java.lang.NumberFormatException"]
               |  |  +- Block[]
               |  |     +- ExpressionStatement[]
               |  |        +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(java.lang.String) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
               |  |           +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
               |  |           |  +- TypeExpression[@TypeMirror = "java.lang.System"]
               |  |           |     +- ClassType[@TypeMirror = "java.lang.System"]
               |  |           +- ArgumentList[]
               |  |              +- InfixExpression[@TypeMirror = "java.lang.String"]
               |  |                 +- StringLiteral[@TypeMirror = "java.lang.String"]
               |  |                 +- VariableAccess[@Name = "s", @TypeMirror = "java.lang.String"]
               |  +- CatchClause[]
               |     +- CatchParameter[]
               |     |  +- ModifierList[]
               |     |  +- ClassType[@TypeMirror = "java.lang.Exception"]
               |     |  +- VariableId[@Name = "_", @TypeMirror = "java.lang.Exception"]
               |     +- Block[]
               |        +- ExpressionStatement[]
               |           +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(java.lang.String) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
               |              +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
               |              |  +- TypeExpression[@TypeMirror = "java.lang.System"]
               |              |     +- ClassType[@TypeMirror = "java.lang.System"]
               |              +- ArgumentList[]
               |                 +- StringLiteral[@TypeMirror = "java.lang.String"]
               +- ExpressionStatement[]
                  +- MethodCall[@Failed = false, @Function = "java.util.stream.Stream<java.lang.String>.<R, A> collect(java.util.stream.Collector<? super java.lang.String, java.lang.Object, java.util.Map<java.lang.Object, java.lang.String>>) -> java.util.Map<java.lang.Object, java.lang.String>", @MethodName = "collect", @TypeMirror = "java.util.Map<java.lang.Object, java.lang.String>", @Unchecked = false, @VarargsCall = false]
                     +- MethodCall[@Failed = false, @Function = "java.util.Collection<java.lang.String>.stream() -> java.util.stream.Stream<java.lang.String>", @MethodName = "stream", @TypeMirror = "java.util.stream.Stream<java.lang.String>", @Unchecked = false, @VarargsCall = false]
                     |  +- MethodCall[@Failed = false, @Function = "java.util.List.<E> of(java.lang.String, java.lang.String) -> java.util.List<java.lang.String>", @MethodName = "of", @TypeMirror = "java.util.List<java.lang.String>", @Unchecked = false, @VarargsCall = false]
                     |  |  +- TypeExpression[@TypeMirror = "java.util.List"]
                     |  |  |  +- ClassType[@TypeMirror = "java.util.List"]
                     |  |  +- ArgumentList[]
                     |  |     +- StringLiteral[@TypeMirror = "java.lang.String"]
                     |  |     +- StringLiteral[@TypeMirror = "java.lang.String"]
                     |  +- ArgumentList[]
                     +- ArgumentList[]
                        +- MethodCall[@Failed = false, @Function = "java.util.stream.Collectors.<T, K, U> toMap(java.util.function.Function<? super java.lang.String, ?>, java.util.function.Function<? super java.lang.String, ? extends java.lang.String>) -> java.util.stream.Collector<java.lang.String, java.lang.Object, java.util.Map<java.lang.Object, java.lang.String>>", @MethodName = "toMap", @TypeMirror = "java.util.stream.Collector<java.lang.String, java.lang.Object, java.util.Map<java.lang.Object, java.lang.String>>", @Unchecked = false, @VarargsCall = false]
                           +- TypeExpression[@TypeMirror = "java.util.stream.Collectors"]
                           |  +- ClassType[@TypeMirror = "java.util.stream.Collectors"]
                           +- ArgumentList[]
                              +- MethodReference[@TypeMirror = "java.util.function.Function<java.lang.String, java.lang.Object>"]
                              |  +- TypeExpression[@TypeMirror = "java.lang.String"]
                              |     +- ClassType[@TypeMirror = "java.lang.String"]
                              +- LambdaExpression[@TypeMirror = "java.util.function.Function<java.lang.String, java.lang.String>"]
                                 +- LambdaParameterList[]
                                 |  +- LambdaParameter[@TypeMirror = "java.lang.String"]
                                 |     +- ModifierList[]
                                 |     +- VariableId[@Name = "_", @TypeMirror = "java.lang.String"]
                                 +- StringLiteral[@TypeMirror = "java.lang.String"]
