COMPILATION_UNIT -> COMPILATION_UNIT [2:0]
|--PACKAGE_DEF -> package [2:0]
|   |--ANNOTATIONS -> ANNOTATIONS [2:47]
|   |--DOT -> . [2:47]
|   |   |--DOT -> . [2:39]
|   |   |   |--DOT -> . [2:28]
|   |   |   |   |--DOT -> . [2:22]
|   |   |   |   |   |--DOT -> . [2:11]
|   |   |   |   |   |   |--IDENT -> com [2:8]
|   |   |   |   |   |   `--IDENT -> puppycrawl [2:12]
|   |   |   |   |   `--IDENT -> tools [2:23]
|   |   |   |   `--IDENT -> checkstyle [2:29]
|   |   |   `--IDENT -> grammar [2:40]
|   |   `--IDENT -> java19 [2:48]
|   `--SEMI -> ; [2:54]
`--CLASS_DEF -> CLASS_DEF [4:0]
    |--MODIFIERS -> MODIFIERS [4:0]
    |   `--LITERAL_PUBLIC -> public [4:0]
    |--LITERAL_CLASS -> class [4:7]
    |--IDENT -> InputRecordPatternsPreviewNestedDecomposition [4:13]
    `--OBJBLOCK -> OBJBLOCK [4:59]
        |--LCURLY -> { [4:59]
        |--RECORD_DEF -> RECORD_DEF [5:4]
        |   |--MODIFIERS -> MODIFIERS [5:4]
        |   |--LITERAL_RECORD -> record [5:4]
        |   |--IDENT -> A [5:11]
        |   |--LPAREN -> ( [5:12]
        |   |--RECORD_COMPONENTS -> RECORD_COMPONENTS [5:13]
        |   |   `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [5:13]
        |   |       |--ANNOTATIONS -> ANNOTATIONS [5:13]
        |   |       |--TYPE -> TYPE [5:13]
        |   |       |   `--IDENT -> Object [5:13]
        |   |       `--IDENT -> o [5:20]
        |   |--RPAREN -> ) [5:21]
        |   `--OBJBLOCK -> OBJBLOCK [5:23]
        |       |--LCURLY -> { [5:23]
        |       `--RCURLY -> } [6:4]
        |--RECORD_DEF -> RECORD_DEF [8:4]
        |   |--MODIFIERS -> MODIFIERS [8:4]
        |   |--LITERAL_RECORD -> record [8:4]
        |   |--IDENT -> B [8:11]
        |   |--LPAREN -> ( [8:12]
        |   |--RECORD_COMPONENTS -> RECORD_COMPONENTS [8:13]
        |   |   `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [8:13]
        |   |       |--ANNOTATIONS -> ANNOTATIONS [8:13]
        |   |       |--TYPE -> TYPE [8:13]
        |   |       |   `--IDENT -> Object [8:13]
        |   |       `--IDENT -> o [8:20]
        |   |--RPAREN -> ) [8:21]
        |   `--OBJBLOCK -> OBJBLOCK [8:23]
        |       |--LCURLY -> { [8:23]
        |       `--RCURLY -> } [9:4]
        |--RECORD_DEF -> RECORD_DEF [11:4]
        |   |--MODIFIERS -> MODIFIERS [11:4]
        |   |--LITERAL_RECORD -> record [11:4]
        |   |--IDENT -> Point [11:11]
        |   |--LPAREN -> ( [11:16]
        |   |--RECORD_COMPONENTS -> RECORD_COMPONENTS [11:17]
        |   |   |--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [11:17]
        |   |   |   |--ANNOTATIONS -> ANNOTATIONS [11:17]
        |   |   |   |--TYPE -> TYPE [11:17]
        |   |   |   |   `--LITERAL_INT -> int [11:17]
        |   |   |   `--IDENT -> x [11:21]
        |   |   |--COMMA -> , [11:22]
        |   |   `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [11:24]
        |   |       |--ANNOTATIONS -> ANNOTATIONS [11:24]
        |   |       |--TYPE -> TYPE [11:24]
        |   |       |   `--LITERAL_INT -> int [11:24]
        |   |       `--IDENT -> y [11:28]
        |   |--RPAREN -> ) [11:29]
        |   `--OBJBLOCK -> OBJBLOCK [11:31]
        |       |--LCURLY -> { [11:31]
        |       `--RCURLY -> } [12:4]
        |--ENUM_DEF -> ENUM_DEF [14:4]
        |   |--MODIFIERS -> MODIFIERS [14:4]
        |   |--ENUM -> enum [14:4]
        |   |--IDENT -> Color [14:9]
        |   `--OBJBLOCK -> OBJBLOCK [14:15]
        |       |--LCURLY -> { [14:15]
        |       |--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF [14:16]
        |       |   |--ANNOTATIONS -> ANNOTATIONS [14:16]
        |       |   `--IDENT -> RED [14:16]
        |       |--COMMA -> , [14:19]
        |       |--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF [14:21]
        |       |   |--ANNOTATIONS -> ANNOTATIONS [14:21]
        |       |   `--IDENT -> GREEN [14:21]
        |       |--COMMA -> , [14:26]
        |       |--ENUM_CONSTANT_DEF -> ENUM_CONSTANT_DEF [14:28]
        |       |   |--ANNOTATIONS -> ANNOTATIONS [14:28]
        |       |   `--IDENT -> BLUE [14:28]
        |       `--RCURLY -> } [14:32]
        |--RECORD_DEF -> RECORD_DEF [16:4]
        |   |--MODIFIERS -> MODIFIERS [16:4]
        |   |--LITERAL_RECORD -> record [16:4]
        |   |--IDENT -> ColoredPoint [16:11]
        |   |--LPAREN -> ( [16:23]
        |   |--RECORD_COMPONENTS -> RECORD_COMPONENTS [16:24]
        |   |   |--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [16:24]
        |   |   |   |--ANNOTATIONS -> ANNOTATIONS [16:24]
        |   |   |   |--TYPE -> TYPE [16:24]
        |   |   |   |   `--IDENT -> Point [16:24]
        |   |   |   `--IDENT -> p [16:30]
        |   |   |--COMMA -> , [16:31]
        |   |   `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [16:33]
        |   |       |--ANNOTATIONS -> ANNOTATIONS [16:33]
        |   |       |--TYPE -> TYPE [16:33]
        |   |       |   `--IDENT -> Color [16:33]
        |   |       `--IDENT -> c [16:39]
        |   |--RPAREN -> ) [16:40]
        |   `--OBJBLOCK -> OBJBLOCK [16:42]
        |       |--LCURLY -> { [16:42]
        |       `--RCURLY -> } [17:4]
        |--RECORD_DEF -> RECORD_DEF [19:4]
        |   |--MODIFIERS -> MODIFIERS [19:4]
        |   |--LITERAL_RECORD -> record [19:4]
        |   |--IDENT -> Rectangle [19:11]
        |   |--LPAREN -> ( [19:20]
        |   |--RECORD_COMPONENTS -> RECORD_COMPONENTS [19:21]
        |   |   |--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [19:21]
        |   |   |   |--ANNOTATIONS -> ANNOTATIONS [19:21]
        |   |   |   |--TYPE -> TYPE [19:21]
        |   |   |   |   `--IDENT -> ColoredPoint [19:21]
        |   |   |   `--IDENT -> upperLeft [19:34]
        |   |   |--COMMA -> , [19:43]
        |   |   `--RECORD_COMPONENT_DEF -> RECORD_COMPONENT_DEF [19:45]
        |   |       |--ANNOTATIONS -> ANNOTATIONS [19:45]
        |   |       |--TYPE -> TYPE [19:45]
        |   |       |   `--IDENT -> ColoredPoint [19:45]
        |   |       `--IDENT -> lowerRight [19:58]
        |   |--RPAREN -> ) [19:68]
        |   `--OBJBLOCK -> OBJBLOCK [19:70]
        |       |--LCURLY -> { [19:70]
        |       `--RCURLY -> } [20:4]
        |--METHOD_DEF -> METHOD_DEF [22:4]
        |   |--MODIFIERS -> MODIFIERS [22:4]
        |   |--TYPE -> TYPE [22:4]
        |   |   `--LITERAL_VOID -> void [22:4]
        |   |--IDENT -> method [22:9]
        |   |--LPAREN -> ( [22:15]
        |   |--PARAMETERS -> PARAMETERS [22:16]
        |   |   `--PARAMETER_DEF -> PARAMETER_DEF [22:16]
        |   |       |--MODIFIERS -> MODIFIERS [22:16]
        |   |       |--TYPE -> TYPE [22:16]
        |   |       |   `--IDENT -> Object [22:16]
        |   |       `--IDENT -> param [22:23]
        |   |--RPAREN -> ) [22:28]
        |   `--SLIST -> { [22:30]
        |       |--LITERAL_SWITCH -> switch [23:8]
        |       |   |--LPAREN -> ( [23:15]
        |       |   |--EXPR -> EXPR [23:16]
        |       |   |   `--IDENT -> param [23:16]
        |       |   |--RPAREN -> ) [23:21]
        |       |   |--LCURLY -> { [23:23]
        |       |   |--SWITCH_RULE -> SWITCH_RULE [24:12]
        |       |   |   |--LITERAL_CASE -> case [24:12]
        |       |   |   |   `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [24:17]
        |       |   |   |       |--MODIFIERS -> MODIFIERS [24:17]
        |       |   |   |       |--TYPE -> TYPE [24:17]
        |       |   |   |       |   `--IDENT -> A [24:17]
        |       |   |   |       |--LPAREN -> ( [24:18]
        |       |   |   |       |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [24:19]
        |       |   |   |       |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [24:19]
        |       |   |   |       |       |--MODIFIERS -> MODIFIERS [24:19]
        |       |   |   |       |       |--TYPE -> TYPE [24:19]
        |       |   |   |       |       |   `--IDENT -> Object [24:19]
        |       |   |   |       |       `--IDENT -> o [24:26]
        |       |   |   |       `--RPAREN -> ) [24:27]
        |       |   |   |--LAMBDA -> -> [24:29]
        |       |   |   `--SLIST -> { [24:32]
        |       |   |       `--RCURLY -> } [25:12]
        |       |   |--SWITCH_RULE -> SWITCH_RULE [26:12]
        |       |   |   |--LITERAL_CASE -> case [26:12]
        |       |   |   |   `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [26:17]
        |       |   |   |       |--MODIFIERS -> MODIFIERS [26:17]
        |       |   |   |       |--TYPE -> TYPE [26:17]
        |       |   |   |       |   `--IDENT -> B [26:17]
        |       |   |   |       |--LPAREN -> ( [26:18]
        |       |   |   |       |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [26:19]
        |       |   |   |       |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [26:19]
        |       |   |   |       |       |--MODIFIERS -> MODIFIERS [26:19]
        |       |   |   |       |       |--TYPE -> TYPE [26:19]
        |       |   |   |       |       |   `--IDENT -> var [26:19]
        |       |   |   |       |       `--IDENT -> o [26:23]
        |       |   |   |       `--RPAREN -> ) [26:24]
        |       |   |   |--LAMBDA -> -> [26:26]
        |       |   |   `--SLIST -> { [26:29]
        |       |   |       `--RCURLY -> } [27:12]
        |       |   |--SWITCH_RULE -> SWITCH_RULE [28:12]
        |       |   |   |--LITERAL_DEFAULT -> default [28:12]
        |       |   |   |--LAMBDA -> -> [28:20]
        |       |   |   `--SLIST -> { [28:23]
        |       |   |       `--RCURLY -> } [29:12]
        |       |   `--RCURLY -> } [30:8]
        |       |--LITERAL_IF -> if [31:8]
        |       |   |--LPAREN -> ( [31:11]
        |       |   |--EXPR -> EXPR [31:18]
        |       |   |   `--LITERAL_INSTANCEOF -> instanceof [31:18]
        |       |   |       |--IDENT -> param [31:12]
        |       |   |       `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [31:29]
        |       |   |           |--MODIFIERS -> MODIFIERS [31:29]
        |       |   |           |--TYPE -> TYPE [31:29]
        |       |   |           |   `--IDENT -> A [31:29]
        |       |   |           |--LPAREN -> ( [31:30]
        |       |   |           |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [31:31]
        |       |   |           |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [31:31]
        |       |   |           |       |--MODIFIERS -> MODIFIERS [31:31]
        |       |   |           |       |--TYPE -> TYPE [31:31]
        |       |   |           |       |   `--IDENT -> var [31:31]
        |       |   |           |       `--IDENT -> o [31:35]
        |       |   |           `--RPAREN -> ) [31:36]
        |       |   |--RPAREN -> ) [31:37]
        |       |   `--SLIST -> { [31:39]
        |       |       `--RCURLY -> } [33:8]
        |       `--RCURLY -> } [34:4]
        |--METHOD_DEF -> METHOD_DEF [37:4]
        |   |--MODIFIERS -> MODIFIERS [37:4]
        |   |   `--LITERAL_STATIC -> static [37:4]
        |   |--TYPE -> TYPE [37:11]
        |   |   `--LITERAL_VOID -> void [37:11]
        |   |--IDENT -> p1 [37:16]
        |   |--LPAREN -> ( [37:18]
        |   |--PARAMETERS -> PARAMETERS [37:19]
        |   |   `--PARAMETER_DEF -> PARAMETER_DEF [37:19]
        |   |       |--MODIFIERS -> MODIFIERS [37:19]
        |   |       |--TYPE -> TYPE [37:19]
        |   |       |   `--IDENT -> Rectangle [37:19]
        |   |       `--IDENT -> r [37:29]
        |   |--RPAREN -> ) [37:30]
        |   `--SLIST -> { [37:32]
        |       |--LITERAL_IF -> if [38:8]
        |       |   |--LPAREN -> ( [38:11]
        |       |   |--EXPR -> EXPR [38:14]
        |       |   |   `--LITERAL_INSTANCEOF -> instanceof [38:14]
        |       |   |       |--IDENT -> r [38:12]
        |       |   |       `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [38:25]
        |       |   |           |--MODIFIERS -> MODIFIERS [38:25]
        |       |   |           |--TYPE -> TYPE [38:25]
        |       |   |           |   `--IDENT -> Rectangle [38:25]
        |       |   |           |--LPAREN -> ( [38:34]
        |       |   |           |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [38:35]
        |       |   |           |   |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [38:35]
        |       |   |           |   |   |--MODIFIERS -> MODIFIERS [38:35]
        |       |   |           |   |   |--TYPE -> TYPE [38:35]
        |       |   |           |   |   |   `--IDENT -> ColoredPoint [38:35]
        |       |   |           |   |   `--IDENT -> ul [38:48]
        |       |   |           |   |--COMMA -> , [38:50]
        |       |   |           |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [38:51]
        |       |   |           |       |--MODIFIERS -> MODIFIERS [38:51]
        |       |   |           |       |--TYPE -> TYPE [38:51]
        |       |   |           |       |   `--IDENT -> ColoredPoint [38:51]
        |       |   |           |       `--IDENT -> lr [38:64]
        |       |   |           `--RPAREN -> ) [38:66]
        |       |   |--RPAREN -> ) [38:67]
        |       |   `--SLIST -> { [38:69]
        |       |       |--EXPR -> EXPR [39:30]
        |       |       |   `--METHOD_CALL -> ( [39:30]
        |       |       |       |--DOT -> . [39:22]
        |       |       |       |   |--DOT -> . [39:18]
        |       |       |       |   |   |--IDENT -> System [39:12]
        |       |       |       |   |   `--IDENT -> out [39:19]
        |       |       |       |   `--IDENT -> println [39:23]
        |       |       |       |--ELIST -> ELIST [39:35]
        |       |       |       |   `--EXPR -> EXPR [39:35]
        |       |       |       |       `--METHOD_CALL -> ( [39:35]
        |       |       |       |           |--DOT -> . [39:33]
        |       |       |       |           |   |--IDENT -> ul [39:31]
        |       |       |       |           |   `--IDENT -> c [39:34]
        |       |       |       |           |--ELIST -> ELIST [39:36]
        |       |       |       |           `--RPAREN -> ) [39:36]
        |       |       |       `--RPAREN -> ) [39:37]
        |       |       |--SEMI -> ; [39:38]
        |       |       `--RCURLY -> } [40:8]
        |       `--RCURLY -> } [41:4]
        |--METHOD_DEF -> METHOD_DEF [45:4]
        |   |--MODIFIERS -> MODIFIERS [45:4]
        |   |   `--LITERAL_STATIC -> static [45:4]
        |   |--TYPE -> TYPE [45:11]
        |   |   `--LITERAL_VOID -> void [45:11]
        |   |--IDENT -> p2 [45:16]
        |   |--LPAREN -> ( [45:18]
        |   |--PARAMETERS -> PARAMETERS [45:19]
        |   |   `--PARAMETER_DEF -> PARAMETER_DEF [45:19]
        |   |       |--MODIFIERS -> MODIFIERS [45:19]
        |   |       |--TYPE -> TYPE [45:19]
        |   |       |   `--IDENT -> Rectangle [45:19]
        |   |       `--IDENT -> r [45:29]
        |   |--RPAREN -> ) [45:30]
        |   `--SLIST -> { [45:32]
        |       |--LITERAL_IF -> if [46:8]
        |       |   |--LPAREN -> ( [46:11]
        |       |   |--EXPR -> EXPR [49:34]
        |       |   |   `--LAND -> && [49:34]
        |       |   |       |--LAND -> && [48:16]
        |       |   |       |   |--LITERAL_INSTANCEOF -> instanceof [46:14]
        |       |   |       |   |   |--IDENT -> r [46:12]
        |       |   |       |   |   `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [46:25]
        |       |   |       |   |       |--MODIFIERS -> MODIFIERS [46:25]
        |       |   |       |   |       |--TYPE -> TYPE [46:25]
        |       |   |       |   |       |   `--IDENT -> Rectangle [46:25]
        |       |   |       |   |       |--LPAREN -> ( [46:34]
        |       |   |       |   |       |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [46:35]
        |       |   |       |   |       |   |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [46:35]
        |       |   |       |   |       |   |   |--MODIFIERS -> MODIFIERS [46:35]
        |       |   |       |   |       |   |   |--TYPE -> TYPE [46:35]
        |       |   |       |   |       |   |   |   `--IDENT -> ColoredPoint [46:35]
        |       |   |       |   |       |   |   |--LPAREN -> ( [46:47]
        |       |   |       |   |       |   |   |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [46:48]
        |       |   |       |   |       |   |   |   |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [46:48]
        |       |   |       |   |       |   |   |   |   |--MODIFIERS -> MODIFIERS [46:48]
        |       |   |       |   |       |   |   |   |   |--TYPE -> TYPE [46:48]
        |       |   |       |   |       |   |   |   |   |   `--IDENT -> Point [46:48]
        |       |   |       |   |       |   |   |   |   `--IDENT -> p1 [46:54]
        |       |   |       |   |       |   |   |   |--COMMA -> , [46:56]
        |       |   |       |   |       |   |   |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [46:57]
        |       |   |       |   |       |   |   |       |--MODIFIERS -> MODIFIERS [46:57]
        |       |   |       |   |       |   |   |       |--TYPE -> TYPE [46:57]
        |       |   |       |   |       |   |   |       |   `--IDENT -> Color [46:57]
        |       |   |       |   |       |   |   |       `--IDENT -> c1 [46:63]
        |       |   |       |   |       |   |   `--RPAREN -> ) [46:65]
        |       |   |       |   |       |   |--COMMA -> , [46:66]
        |       |   |       |   |       |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [47:16]
        |       |   |       |   |       |       |--MODIFIERS -> MODIFIERS [47:16]
        |       |   |       |   |       |       |--TYPE -> TYPE [47:16]
        |       |   |       |   |       |       |   `--IDENT -> ColoredPoint [47:16]
        |       |   |       |   |       |       `--IDENT -> lr1 [47:29]
        |       |   |       |   |       `--RPAREN -> ) [47:32]
        |       |   |       |   `--LITERAL_INSTANCEOF -> instanceof [48:21]
        |       |   |       |       |--IDENT -> r [48:19]
        |       |   |       |       `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [48:32]
        |       |   |       |           |--MODIFIERS -> MODIFIERS [48:32]
        |       |   |       |           |--TYPE -> TYPE [48:32]
        |       |   |       |           |   `--IDENT -> Rectangle [48:32]
        |       |   |       |           |--LPAREN -> ( [48:41]
        |       |   |       |           |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [48:42]
        |       |   |       |           |   |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [48:42]
        |       |   |       |           |   |   |--MODIFIERS -> MODIFIERS [48:42]
        |       |   |       |           |   |   |--TYPE -> TYPE [48:42]
        |       |   |       |           |   |   |   `--IDENT -> ColoredPoint [48:42]
        |       |   |       |           |   |   |--LPAREN -> ( [48:54]
        |       |   |       |           |   |   |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [48:55]
        |       |   |       |           |   |   |   |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [48:55]
        |       |   |       |           |   |   |   |   |--MODIFIERS -> MODIFIERS [48:55]
        |       |   |       |           |   |   |   |   |--TYPE -> TYPE [48:55]
        |       |   |       |           |   |   |   |   |   `--IDENT -> Point [48:55]
        |       |   |       |           |   |   |   |   `--IDENT -> p2 [48:61]
        |       |   |       |           |   |   |   |--COMMA -> , [48:63]
        |       |   |       |           |   |   |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [48:64]
        |       |   |       |           |   |   |       |--MODIFIERS -> MODIFIERS [48:64]
        |       |   |       |           |   |   |       |--TYPE -> TYPE [48:64]
        |       |   |       |           |   |   |       |   `--IDENT -> Color [48:64]
        |       |   |       |           |   |   |       `--IDENT -> c2 [48:70]
        |       |   |       |           |   |   `--RPAREN -> ) [48:72]
        |       |   |       |           |   |--COMMA -> , [48:73]
        |       |   |       |           |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [49:16]
        |       |   |       |           |       |--MODIFIERS -> MODIFIERS [49:16]
        |       |   |       |           |       |--TYPE -> TYPE [49:16]
        |       |   |       |           |       |   `--IDENT -> ColoredPoint [49:16]
        |       |   |       |           |       `--IDENT -> lr2 [49:29]
        |       |   |       |           `--RPAREN -> ) [49:32]
        |       |   |       `--EQUAL -> == [49:43]
        |       |   |           |--DOT -> . [49:40]
        |       |   |           |   |--IDENT -> lr2 [49:37]
        |       |   |           |   `--IDENT -> c [49:41]
        |       |   |           `--DOT -> . [49:51]
        |       |   |               |--IDENT -> Color [49:46]
        |       |   |               `--IDENT -> BLUE [49:52]
        |       |   |--RPAREN -> ) [49:56]
        |       |   `--SLIST -> { [49:58]
        |       |       |--EXPR -> EXPR [50:30]
        |       |       |   `--METHOD_CALL -> ( [50:30]
        |       |       |       |--DOT -> . [50:22]
        |       |       |       |   |--DOT -> . [50:18]
        |       |       |       |   |   |--IDENT -> System [50:12]
        |       |       |       |   |   `--IDENT -> out [50:19]
        |       |       |       |   `--IDENT -> println [50:23]
        |       |       |       |--ELIST -> ELIST [50:31]
        |       |       |       |   `--EXPR -> EXPR [50:31]
        |       |       |       |       `--IDENT -> r [50:31]
        |       |       |       `--RPAREN -> ) [50:32]
        |       |       |--SEMI -> ; [50:33]
        |       |       `--RCURLY -> } [51:8]
        |       `--RCURLY -> } [52:4]
        |--METHOD_DEF -> METHOD_DEF [55:4]
        |   |--MODIFIERS -> MODIFIERS [55:4]
        |   |   `--LITERAL_STATIC -> static [55:4]
        |   |--TYPE -> TYPE [55:11]
        |   |   `--LITERAL_VOID -> void [55:11]
        |   |--IDENT -> p3 [55:16]
        |   |--LPAREN -> ( [55:18]
        |   |--PARAMETERS -> PARAMETERS [55:19]
        |   |   `--PARAMETER_DEF -> PARAMETER_DEF [55:19]
        |   |       |--MODIFIERS -> MODIFIERS [55:19]
        |   |       |--TYPE -> TYPE [55:19]
        |   |       |   `--IDENT -> Rectangle [55:19]
        |   |       `--IDENT -> r [55:29]
        |   |--RPAREN -> ) [55:30]
        |   `--SLIST -> { [55:32]
        |       |--LITERAL_IF -> if [56:8]
        |       |   |--LPAREN -> ( [56:11]
        |       |   |--EXPR -> EXPR [58:16]
        |       |   |   `--LAND -> && [58:16]
        |       |   |       |--LITERAL_INSTANCEOF -> instanceof [56:14]
        |       |   |       |   |--IDENT -> r [56:12]
        |       |   |       |   `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [56:25]
        |       |   |       |       |--MODIFIERS -> MODIFIERS [56:25]
        |       |   |       |       |--TYPE -> TYPE [56:25]
        |       |   |       |       |   `--IDENT -> Rectangle [56:25]
        |       |   |       |       |--LPAREN -> ( [56:34]
        |       |   |       |       |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [56:35]
        |       |   |       |       |   |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [56:35]
        |       |   |       |       |   |   |--MODIFIERS -> MODIFIERS [56:35]
        |       |   |       |       |   |   |--TYPE -> TYPE [56:35]
        |       |   |       |       |   |   |   `--IDENT -> ColoredPoint [56:35]
        |       |   |       |       |   |   |--LPAREN -> ( [56:47]
        |       |   |       |       |   |   |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [56:48]
        |       |   |       |       |   |   |   |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [56:48]
        |       |   |       |       |   |   |   |   |--MODIFIERS -> MODIFIERS [56:48]
        |       |   |       |       |   |   |   |   |--TYPE -> TYPE [56:48]
        |       |   |       |       |   |   |   |   |   `--IDENT -> Point [56:48]
        |       |   |       |       |   |   |   |   `--IDENT -> p1 [56:54]
        |       |   |       |       |   |   |   |--COMMA -> , [56:56]
        |       |   |       |       |   |   |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [56:57]
        |       |   |       |       |   |   |       |--MODIFIERS -> MODIFIERS [56:57]
        |       |   |       |       |   |   |       |--TYPE -> TYPE [56:57]
        |       |   |       |       |   |   |       |   `--IDENT -> Color [56:57]
        |       |   |       |       |   |   |       `--IDENT -> c1 [56:63]
        |       |   |       |       |   |   `--RPAREN -> ) [56:65]
        |       |   |       |       |   |--COMMA -> , [56:66]
        |       |   |       |       |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [57:16]
        |       |   |       |       |       |--MODIFIERS -> MODIFIERS [57:16]
        |       |   |       |       |       |--TYPE -> TYPE [57:16]
        |       |   |       |       |       |   `--IDENT -> ColoredPoint [57:16]
        |       |   |       |       |       `--IDENT -> lr1 [57:29]
        |       |   |       |       `--RPAREN -> ) [57:32]
        |       |   |       `--LITERAL_INSTANCEOF -> instanceof [58:21]
        |       |   |           |--IDENT -> r [58:19]
        |       |   |           `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [58:32]
        |       |   |               |--MODIFIERS -> MODIFIERS [58:32]
        |       |   |               |--TYPE -> TYPE [58:32]
        |       |   |               |   `--IDENT -> Rectangle [58:32]
        |       |   |               |--LPAREN -> ( [58:41]
        |       |   |               |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [59:16]
        |       |   |               |   |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [59:16]
        |       |   |               |   |   |--MODIFIERS -> MODIFIERS [59:16]
        |       |   |               |   |   |--TYPE -> TYPE [59:16]
        |       |   |               |   |   |   `--IDENT -> ColoredPoint [59:16]
        |       |   |               |   |   |--LPAREN -> ( [59:28]
        |       |   |               |   |   |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [59:29]
        |       |   |               |   |   |   |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [59:29]
        |       |   |               |   |   |   |   |--MODIFIERS -> MODIFIERS [59:29]
        |       |   |               |   |   |   |   |--TYPE -> TYPE [59:29]
        |       |   |               |   |   |   |   |   `--IDENT -> Point [59:29]
        |       |   |               |   |   |   |   |--LPAREN -> ( [59:34]
        |       |   |               |   |   |   |   |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [59:35]
        |       |   |               |   |   |   |   |   |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [59:35]
        |       |   |               |   |   |   |   |   |   |--MODIFIERS -> MODIFIERS [59:35]
        |       |   |               |   |   |   |   |   |   |--TYPE -> TYPE [59:35]
        |       |   |               |   |   |   |   |   |   |   `--LITERAL_INT -> int [59:35]
        |       |   |               |   |   |   |   |   |   `--IDENT -> x [59:39]
        |       |   |               |   |   |   |   |   |--COMMA -> , [59:40]
        |       |   |               |   |   |   |   |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [59:41]
        |       |   |               |   |   |   |   |       |--MODIFIERS -> MODIFIERS [59:41]
        |       |   |               |   |   |   |   |       |--TYPE -> TYPE [59:41]
        |       |   |               |   |   |   |   |       |   `--LITERAL_INT -> int [59:41]
        |       |   |               |   |   |   |   |       `--IDENT -> y [59:45]
        |       |   |               |   |   |   |   `--RPAREN -> ) [59:46]
        |       |   |               |   |   |   |--COMMA -> , [59:47]
        |       |   |               |   |   |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [59:48]
        |       |   |               |   |   |       |--MODIFIERS -> MODIFIERS [59:48]
        |       |   |               |   |   |       |--TYPE -> TYPE [59:48]
        |       |   |               |   |   |       |   `--IDENT -> Color [59:48]
        |       |   |               |   |   |       `--IDENT -> c2 [59:54]
        |       |   |               |   |   `--RPAREN -> ) [59:56]
        |       |   |               |   |--COMMA -> , [59:57]
        |       |   |               |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [60:16]
        |       |   |               |       |--MODIFIERS -> MODIFIERS [60:16]
        |       |   |               |       |--TYPE -> TYPE [60:16]
        |       |   |               |       |   `--IDENT -> ColoredPoint [60:16]
        |       |   |               |       `--IDENT -> lr2 [60:29]
        |       |   |               `--RPAREN -> ) [60:32]
        |       |   |--RPAREN -> ) [60:33]
        |       |   `--SLIST -> { [60:35]
        |       |       |--EXPR -> EXPR [61:30]
        |       |       |   `--METHOD_CALL -> ( [61:30]
        |       |       |       |--DOT -> . [61:22]
        |       |       |       |   |--DOT -> . [61:18]
        |       |       |       |   |   |--IDENT -> System [61:12]
        |       |       |       |   |   `--IDENT -> out [61:19]
        |       |       |       |   `--IDENT -> println [61:23]
        |       |       |       |--ELIST -> ELIST [61:31]
        |       |       |       |   `--EXPR -> EXPR [61:31]
        |       |       |       |       `--IDENT -> r [61:31]
        |       |       |       `--RPAREN -> ) [61:32]
        |       |       |--SEMI -> ; [61:33]
        |       |       `--RCURLY -> } [62:8]
        |       `--RCURLY -> } [63:4]
        |--METHOD_DEF -> METHOD_DEF [65:4]
        |   |--MODIFIERS -> MODIFIERS [65:4]
        |   |   `--LITERAL_STATIC -> static [65:4]
        |   |--TYPE -> TYPE [65:11]
        |   |   `--LITERAL_VOID -> void [65:11]
        |   |--IDENT -> p4 [65:16]
        |   |--LPAREN -> ( [65:18]
        |   |--PARAMETERS -> PARAMETERS [65:19]
        |   |--RPAREN -> ) [65:19]
        |   `--SLIST -> { [65:21]
        |       |--VARIABLE_DEF -> VARIABLE_DEF [66:8]
        |       |   |--MODIFIERS -> MODIFIERS [66:8]
        |       |   |--TYPE -> TYPE [66:8]
        |       |   |   `--LITERAL_INT -> int [66:8]
        |       |   |--IDENT -> x1 [66:12]
        |       |   `--ASSIGN -> = [66:15]
        |       |       `--EXPR -> EXPR [66:17]
        |       |           `--NUM_INT -> 0 [66:17]
        |       |--SEMI -> ; [66:18]
        |       |--VARIABLE_DEF -> VARIABLE_DEF [67:8]
        |       |   |--MODIFIERS -> MODIFIERS [67:8]
        |       |   |--TYPE -> TYPE [67:8]
        |       |   |   `--LITERAL_INT -> int [67:8]
        |       |   |--IDENT -> x2 [67:12]
        |       |   `--ASSIGN -> = [67:15]
        |       |       `--EXPR -> EXPR [67:17]
        |       |           `--NUM_INT -> 0 [67:17]
        |       |--SEMI -> ; [67:18]
        |       |--VARIABLE_DEF -> VARIABLE_DEF [68:8]
        |       |   |--MODIFIERS -> MODIFIERS [68:8]
        |       |   |--TYPE -> TYPE [68:8]
        |       |   |   `--LITERAL_INT -> int [68:8]
        |       |   |--IDENT -> y1 [68:12]
        |       |   `--ASSIGN -> = [68:15]
        |       |       `--EXPR -> EXPR [68:17]
        |       |           `--NUM_INT -> 0 [68:17]
        |       |--SEMI -> ; [68:18]
        |       |--VARIABLE_DEF -> VARIABLE_DEF [69:8]
        |       |   |--MODIFIERS -> MODIFIERS [69:8]
        |       |   |--TYPE -> TYPE [69:8]
        |       |   |   `--LITERAL_INT -> int [69:8]
        |       |   |--IDENT -> y2 [69:12]
        |       |   `--ASSIGN -> = [69:15]
        |       |       `--EXPR -> EXPR [69:17]
        |       |           `--NUM_INT -> 0 [69:17]
        |       |--SEMI -> ; [69:18]
        |       |--VARIABLE_DEF -> VARIABLE_DEF [70:8]
        |       |   |--MODIFIERS -> MODIFIERS [70:8]
        |       |   |--TYPE -> TYPE [70:8]
        |       |   |   `--IDENT -> Color [70:8]
        |       |   |--IDENT -> c1 [70:14]
        |       |   `--ASSIGN -> = [70:17]
        |       |       `--EXPR -> EXPR [70:24]
        |       |           `--DOT -> . [70:24]
        |       |               |--IDENT -> Color [70:19]
        |       |               `--IDENT -> BLUE [70:25]
        |       |--SEMI -> ; [70:29]
        |       |--VARIABLE_DEF -> VARIABLE_DEF [71:8]
        |       |   |--MODIFIERS -> MODIFIERS [71:8]
        |       |   |--TYPE -> TYPE [71:8]
        |       |   |   `--IDENT -> Color [71:8]
        |       |   |--IDENT -> c2 [71:14]
        |       |   `--ASSIGN -> = [71:17]
        |       |       `--EXPR -> EXPR [71:24]
        |       |           `--DOT -> . [71:24]
        |       |               |--IDENT -> Color [71:19]
        |       |               `--IDENT -> GREEN [71:25]
        |       |--SEMI -> ; [71:30]
        |       |--VARIABLE_DEF -> VARIABLE_DEF [72:8]
        |       |   |--MODIFIERS -> MODIFIERS [72:8]
        |       |   |--TYPE -> TYPE [72:8]
        |       |   |   `--IDENT -> Rectangle [72:8]
        |       |   |--IDENT -> r [72:18]
        |       |   `--ASSIGN -> = [72:20]
        |       |       `--EXPR -> EXPR [72:22]
        |       |           `--LITERAL_NEW -> new [72:22]
        |       |               |--IDENT -> Rectangle [72:26]
        |       |               |--LPAREN -> ( [72:35]
        |       |               |--ELIST -> ELIST [72:36]
        |       |               |   |--EXPR -> EXPR [72:36]
        |       |               |   |   `--LITERAL_NEW -> new [72:36]
        |       |               |   |       |--IDENT -> ColoredPoint [72:40]
        |       |               |   |       |--LPAREN -> ( [72:52]
        |       |               |   |       |--ELIST -> ELIST [72:53]
        |       |               |   |       |   |--EXPR -> EXPR [72:53]
        |       |               |   |       |   |   `--LITERAL_NEW -> new [72:53]
        |       |               |   |       |   |       |--IDENT -> Point [72:57]
        |       |               |   |       |   |       |--LPAREN -> ( [72:62]
        |       |               |   |       |   |       |--ELIST -> ELIST [72:63]
        |       |               |   |       |   |       |   |--EXPR -> EXPR [72:63]
        |       |               |   |       |   |       |   |   `--IDENT -> x1 [72:63]
        |       |               |   |       |   |       |   |--COMMA -> , [72:65]
        |       |               |   |       |   |       |   `--EXPR -> EXPR [72:67]
        |       |               |   |       |   |       |       `--IDENT -> y1 [72:67]
        |       |               |   |       |   |       `--RPAREN -> ) [72:69]
        |       |               |   |       |   |--COMMA -> , [72:70]
        |       |               |   |       |   `--EXPR -> EXPR [72:72]
        |       |               |   |       |       `--IDENT -> c1 [72:72]
        |       |               |   |       `--RPAREN -> ) [72:74]
        |       |               |   |--COMMA -> , [72:75]
        |       |               |   `--EXPR -> EXPR [73:16]
        |       |               |       `--LITERAL_NEW -> new [73:16]
        |       |               |           |--IDENT -> ColoredPoint [73:20]
        |       |               |           |--LPAREN -> ( [73:32]
        |       |               |           |--ELIST -> ELIST [73:33]
        |       |               |           |   |--EXPR -> EXPR [73:33]
        |       |               |           |   |   `--LITERAL_NEW -> new [73:33]
        |       |               |           |   |       |--IDENT -> Point [73:37]
        |       |               |           |   |       |--LPAREN -> ( [73:42]
        |       |               |           |   |       |--ELIST -> ELIST [73:43]
        |       |               |           |   |       |   |--EXPR -> EXPR [73:43]
        |       |               |           |   |       |   |   `--IDENT -> x2 [73:43]
        |       |               |           |   |       |   |--COMMA -> , [73:45]
        |       |               |           |   |       |   `--EXPR -> EXPR [73:47]
        |       |               |           |   |       |       `--IDENT -> y2 [73:47]
        |       |               |           |   |       `--RPAREN -> ) [73:49]
        |       |               |           |   |--COMMA -> , [73:50]
        |       |               |           |   `--EXPR -> EXPR [73:52]
        |       |               |           |       `--IDENT -> c2 [73:52]
        |       |               |           `--RPAREN -> ) [73:54]
        |       |               `--RPAREN -> ) [73:55]
        |       |--SEMI -> ; [73:56]
        |       |--LITERAL_IF -> if [74:8]
        |       |   |--LPAREN -> ( [74:11]
        |       |   |--EXPR -> EXPR [74:14]
        |       |   |   `--LITERAL_INSTANCEOF -> instanceof [74:14]
        |       |   |       |--IDENT -> r [74:12]
        |       |   |       `--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [74:25]
        |       |   |           |--MODIFIERS -> MODIFIERS [74:25]
        |       |   |           |--TYPE -> TYPE [74:25]
        |       |   |           |   `--IDENT -> Rectangle [74:25]
        |       |   |           |--LPAREN -> ( [74:34]
        |       |   |           |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [75:16]
        |       |   |           |   |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [75:16]
        |       |   |           |   |   |--MODIFIERS -> MODIFIERS [75:16]
        |       |   |           |   |   |--TYPE -> TYPE [75:16]
        |       |   |           |   |   |   `--IDENT -> ColoredPoint [75:16]
        |       |   |           |   |   |--LPAREN -> ( [75:28]
        |       |   |           |   |   |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [75:29]
        |       |   |           |   |   |   |--RECORD_PATTERN_DEF -> RECORD_PATTERN_DEF [75:29]
        |       |   |           |   |   |   |   |--MODIFIERS -> MODIFIERS [75:29]
        |       |   |           |   |   |   |   |--TYPE -> TYPE [75:29]
        |       |   |           |   |   |   |   |   `--IDENT -> Point [75:29]
        |       |   |           |   |   |   |   |--LPAREN -> ( [75:34]
        |       |   |           |   |   |   |   |--RECORD_PATTERN_COMPONENTS -> RECORD_PATTERN_COMPONENTS [75:35]
        |       |   |           |   |   |   |   |   |--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [75:35]
        |       |   |           |   |   |   |   |   |   |--MODIFIERS -> MODIFIERS [75:35]
        |       |   |           |   |   |   |   |   |   |--TYPE -> TYPE [75:35]
        |       |   |           |   |   |   |   |   |   |   `--IDENT -> var [75:35]
        |       |   |           |   |   |   |   |   |   `--IDENT -> x [75:39]
        |       |   |           |   |   |   |   |   |--COMMA -> , [75:40]
        |       |   |           |   |   |   |   |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [75:41]
        |       |   |           |   |   |   |   |       |--MODIFIERS -> MODIFIERS [75:41]
        |       |   |           |   |   |   |   |       |--TYPE -> TYPE [75:41]
        |       |   |           |   |   |   |   |       |   `--IDENT -> var [75:41]
        |       |   |           |   |   |   |   |       `--IDENT -> y [75:45]
        |       |   |           |   |   |   |   `--RPAREN -> ) [75:46]
        |       |   |           |   |   |   |--COMMA -> , [75:47]
        |       |   |           |   |   |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [75:48]
        |       |   |           |   |   |       |--MODIFIERS -> MODIFIERS [75:48]
        |       |   |           |   |   |       |--TYPE -> TYPE [75:48]
        |       |   |           |   |   |       |   `--IDENT -> var [75:48]
        |       |   |           |   |   |       `--IDENT -> c [75:52]
        |       |   |           |   |   `--RPAREN -> ) [75:53]
        |       |   |           |   |--COMMA -> , [75:54]
        |       |   |           |   `--PATTERN_VARIABLE_DEF -> PATTERN_VARIABLE_DEF [76:16]
        |       |   |           |       |--MODIFIERS -> MODIFIERS [76:16]
        |       |   |           |       |--TYPE -> TYPE [76:16]
        |       |   |           |       |   `--IDENT -> var [76:16]
        |       |   |           |       `--IDENT -> lr [76:20]
        |       |   |           `--RPAREN -> ) [76:22]
        |       |   |--RPAREN -> ) [76:23]
        |       |   `--SLIST -> { [76:25]
        |       |       |--EXPR -> EXPR [77:30]
        |       |       |   `--METHOD_CALL -> ( [77:30]
        |       |       |       |--DOT -> . [77:22]
        |       |       |       |   |--DOT -> . [77:18]
        |       |       |       |   |   |--IDENT -> System [77:12]
        |       |       |       |   |   `--IDENT -> out [77:19]
        |       |       |       |   `--IDENT -> println [77:23]
        |       |       |       |--ELIST -> ELIST [77:31]
        |       |       |       |   `--EXPR -> EXPR [77:31]
        |       |       |       |       `--IDENT -> x [77:31]
        |       |       |       `--RPAREN -> ) [77:32]
        |       |       |--SEMI -> ; [77:33]
        |       |       `--RCURLY -> } [78:8]
        |       `--RCURLY -> } [79:4]
        `--RCURLY -> } [80:0]
