@ ProgramNode (location: (1,8)-(3,11)) ├── locals: [] └── statements: @ StatementsNode (location: (1,8)-(3,11)) └── body: (length: 1) └── @ CaseMatchNode (location: (1,8)-(3,11)) ├── predicate: │ @ ArrayNode (location: (1,13)-(1,51)) │ ├── flags: ∅ │ ├── elements: (length: 3) │ │ ├── @ SourceFileNode (location: (1,14)-(1,22)) │ │ │ ├── flags: ∅ │ │ │ └── filepath: "whitequark/pattern_matching__FILE__LINE_literals.txt" │ │ ├── @ CallNode (location: (1,24)-(1,36)) │ │ │ ├── flags: ∅ │ │ │ ├── receiver: │ │ │ │ @ SourceLineNode (location: (1,24)-(1,32)) │ │ │ ├── call_operator_loc: ∅ │ │ │ ├── name: :+ │ │ │ ├── message_loc: (1,33)-(1,34) = "+" │ │ │ ├── opening_loc: ∅ │ │ │ ├── arguments: │ │ │ │ @ ArgumentsNode (location: (1,35)-(1,36)) │ │ │ │ ├── flags: ∅ │ │ │ │ └── arguments: (length: 1) │ │ │ │ └── @ IntegerNode (location: (1,35)-(1,36)) │ │ │ │ ├── flags: decimal │ │ │ │ └── value: 1 │ │ │ ├── closing_loc: ∅ │ │ │ └── block: ∅ │ │ └── @ SourceEncodingNode (location: (1,38)-(1,50)) │ ├── opening_loc: (1,13)-(1,14) = "[" │ └── closing_loc: (1,50)-(1,51) = "]" ├── conditions: (length: 1) │ └── @ InNode (location: (2,10)-(2,47)) │ ├── pattern: │ │ @ ArrayPatternNode (location: (2,13)-(2,47)) │ │ ├── constant: ∅ │ │ ├── requireds: (length: 3) │ │ │ ├── @ SourceFileNode (location: (2,14)-(2,22)) │ │ │ │ ├── flags: ∅ │ │ │ │ └── filepath: "whitequark/pattern_matching__FILE__LINE_literals.txt" │ │ │ ├── @ SourceLineNode (location: (2,24)-(2,32)) │ │ │ └── @ SourceEncodingNode (location: (2,34)-(2,46)) │ │ ├── rest: ∅ │ │ ├── posts: (length: 0) │ │ ├── opening_loc: (2,13)-(2,14) = "[" │ │ └── closing_loc: (2,46)-(2,47) = "]" │ ├── statements: ∅ │ ├── in_loc: (2,10)-(2,12) = "in" │ └── then_loc: ∅ ├── consequent: ∅ ├── case_keyword_loc: (1,8)-(1,12) = "case" └── end_keyword_loc: (3,8)-(3,11) = "end"