@ ProgramNode (location: (0...10)) ├── locals: [] └── statements: @ StatementsNode (location: (0...10)) └── body: (length: 1) └── @ InterpolatedStringNode (location: (0...10)) ├── opening_loc: (0...1) = "\"" ├── parts: (length: 2) │ ├── @ EmbeddedStatementsNode (location: (1...5)) │ │ ├── opening_loc: (1...3) = "\#{" │ │ ├── statements: │ │ │ @ StatementsNode (location: (3...4)) │ │ │ └── body: (length: 1) │ │ │ └── @ CallNode (location: (3...4)) │ │ │ ├── receiver: ∅ │ │ │ ├── call_operator_loc: ∅ │ │ │ ├── message_loc: (3...4) = "a" │ │ │ ├── opening_loc: ∅ │ │ │ ├── arguments: ∅ │ │ │ ├── closing_loc: ∅ │ │ │ ├── block: ∅ │ │ │ ├── flags: variable_call │ │ │ └── name: "a" │ │ └── closing_loc: (4...5) = "}" │ └── @ EmbeddedStatementsNode (location: (5...9)) │ ├── opening_loc: (5...7) = "\#{" │ ├── statements: │ │ @ StatementsNode (location: (7...8)) │ │ └── body: (length: 1) │ │ └── @ CallNode (location: (7...8)) │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── message_loc: (7...8) = "b" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ ├── block: ∅ │ │ ├── flags: variable_call │ │ └── name: "b" │ └── closing_loc: (8...9) = "}" └── closing_loc: (9...10) = "\""