@ ProgramNode (location: (1,0)-(1,12)) ├── locals: [:str] └── statements: @ StatementsNode (location: (1,0)-(1,12)) └── body: (length: 1) └── @ LocalVariableWriteNode (location: (1,0)-(1,12)) ├── name: :str ├── depth: 0 ├── name_loc: (1,0)-(1,3) = "str" ├── value: │ @ StringNode (location: (1,6)-(1,12)) │ ├── flags: ∅ │ ├── opening_loc: (1,6)-(1,12) = "<<-XXX" │ ├── content_loc: (2,0)-(4,0) = "before\\\r\nafter\r\n" │ ├── closing_loc: (4,0)-(5,0) = "XXX\r\n" │ └── unescaped: "beforeafter\n" └── operator_loc: (1,4)-(1,5) = "="