@ ProgramNode (location: (0...86))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...86))
    └── body: (length: 4)
        ├── @ DefNode (location: (0...12))
        │   ├── name: :foo
        │   ├── name_loc: (4...7) = "foo"
        │   ├── receiver: ∅
        │   ├── parameters: ∅
        │   ├── body:
        │   │   @ StatementsNode (location: (10...12))
        │   │   └── body: (length: 1)
        │   │       └── @ IntegerNode (location: (10...12))
        │   │           └── flags: decimal
        │   ├── locals: []
        │   ├── def_keyword_loc: (0...3) = "def"
        │   ├── operator_loc: ∅
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: (8...9) = "="
        │   └── end_keyword_loc: ∅
        ├── @ DefNode (location: (14...37))
        │   ├── name: :foo
        │   ├── name_loc: (18...21) = "foo"
        │   ├── receiver: ∅
        │   ├── parameters: ∅
        │   ├── body:
        │   │   @ StatementsNode (location: (24...37))
        │   │   └── body: (length: 1)
        │   │       └── @ RescueModifierNode (location: (24...37))
        │   │           ├── expression:
        │   │           │   @ IntegerNode (location: (24...26))
        │   │           │   └── flags: decimal
        │   │           ├── keyword_loc: (27...33) = "rescue"
        │   │           └── rescue_expression:
        │   │               @ NilNode (location: (34...37))
        │   ├── locals: []
        │   ├── def_keyword_loc: (14...17) = "def"
        │   ├── operator_loc: ∅
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: (22...23) = "="
        │   └── end_keyword_loc: ∅
        ├── @ DefNode (location: (39...56))
        │   ├── name: :foo
        │   ├── name_loc: (48...51) = "foo"
        │   ├── receiver:
        │   │   @ SelfNode (location: (43...47))
        │   ├── parameters: ∅
        │   ├── body:
        │   │   @ StatementsNode (location: (54...56))
        │   │   └── body: (length: 1)
        │   │       └── @ IntegerNode (location: (54...56))
        │   │           └── flags: decimal
        │   ├── locals: []
        │   ├── def_keyword_loc: (39...42) = "def"
        │   ├── operator_loc: (47...48) = "."
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: (52...53) = "="
        │   └── end_keyword_loc: ∅
        └── @ DefNode (location: (58...86))
            ├── name: :foo
            ├── name_loc: (67...70) = "foo"
            ├── receiver:
            │   @ SelfNode (location: (62...66))
            ├── parameters: ∅
            ├── body:
            │   @ StatementsNode (location: (73...86))
            │   └── body: (length: 1)
            │       └── @ RescueModifierNode (location: (73...86))
            │           ├── expression:
            │           │   @ IntegerNode (location: (73...75))
            │           │   └── flags: decimal
            │           ├── keyword_loc: (76...82) = "rescue"
            │           └── rescue_expression:
            │               @ NilNode (location: (83...86))
            ├── locals: []
            ├── def_keyword_loc: (58...61) = "def"
            ├── operator_loc: (66...67) = "."
            ├── lparen_loc: ∅
            ├── rparen_loc: ∅
            ├── equal_loc: (71...72) = "="
            └── end_keyword_loc: ∅
