@ ProgramNode (location: (1,0)-(3,8))
├── flags: ∅
├── locals: []
└── statements:
    @ StatementsNode (location: (1,0)-(3,8))
    ├── flags: ∅
    └── body: (length: 2)
        ├── @ StringNode (location: (1,0)-(1,10))
        │   ├── flags: newline
        │   ├── opening_loc: (1,0)-(1,3) = "%q("
        │   ├── content_loc: (1,3)-(1,9) = "foobar"
        │   ├── closing_loc: (1,9)-(1,10) = ")"
        │   └── unescaped: "foobar"
        └── @ StringNode (location: (3,0)-(3,8))
            ├── flags: newline
            ├── opening_loc: (3,0)-(3,1) = "'"
            ├── content_loc: (3,1)-(3,7) = "foobar"
            ├── closing_loc: (3,7)-(3,8) = "'"
            └── unescaped: "foobar"
