@ ProgramNode (location: (1,0)-(1,31)) ├── locals: [:match] └── statements: @ StatementsNode (location: (1,0)-(1,31)) └── body: (length: 2) ├── @ MatchWriteNode (location: (1,0)-(1,24)) │ ├── call: │ │ @ CallNode (location: (1,0)-(1,24)) │ │ ├── flags: ∅ │ │ ├── receiver: │ │ │ @ RegularExpressionNode (location: (1,0)-(1,15)) │ │ │ ├── flags: forced_us_ascii_encoding │ │ │ ├── opening_loc: (1,0)-(1,1) = "/" │ │ │ ├── content_loc: (1,1)-(1,14) = "(?bar)" │ │ │ ├── closing_loc: (1,14)-(1,15) = "/" │ │ │ └── unescaped: "(?bar)" │ │ ├── call_operator_loc: ∅ │ │ ├── name: :=~ │ │ ├── message_loc: (1,16)-(1,18) = "=~" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (1,19)-(1,24)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ StringNode (location: (1,19)-(1,24)) │ │ │ ├── flags: ∅ │ │ │ ├── opening_loc: (1,19)-(1,20) = "'" │ │ │ ├── content_loc: (1,20)-(1,23) = "bar" │ │ │ ├── closing_loc: (1,23)-(1,24) = "'" │ │ │ └── unescaped: "bar" │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ └── targets: (length: 1) │ └── @ LocalVariableTargetNode (location: (1,4)-(1,9)) │ ├── name: :match │ └── depth: 0 └── @ LocalVariableReadNode (location: (1,26)-(1,31)) ├── name: :match └── depth: 0