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