@ ProgramNode (location: (0...200))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...200))
    └── body: (length: 21)
        ├── @ CallNode (location: (0...8))
        │   ├── receiver:
        │   │   @ CallNode (location: (0...3))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (0...3) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (4...6) = "!="
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (7...8))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (7...8))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "!="
        ├── @ CallNode (location: (10...18))
        │   ├── receiver:
        │   │   @ CallNode (location: (10...13))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (10...13) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (14...16) = "!~"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (17...18))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (17...18))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "!~"
        ├── @ CallNode (location: (20...27))
        │   ├── receiver:
        │   │   @ CallNode (location: (20...23))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (20...23) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (24...25) = "%"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (26...27))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (26...27))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "%"
        ├── @ CallNode (location: (29...36))
        │   ├── receiver:
        │   │   @ CallNode (location: (29...32))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (29...32) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (33...34) = "&"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (35...36))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (35...36))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "&"
        ├── @ CallNode (location: (38...45))
        │   ├── receiver:
        │   │   @ CallNode (location: (38...41))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (38...41) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (42...43) = "*"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (44...45))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (44...45))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "*"
        ├── @ CallNode (location: (47...55))
        │   ├── receiver:
        │   │   @ CallNode (location: (47...50))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (47...50) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (51...53) = "**"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (54...55))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (54...55))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "**"
        ├── @ CallNode (location: (57...64))
        │   ├── receiver:
        │   │   @ CallNode (location: (57...60))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (57...60) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (61...62) = "+"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (63...64))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (63...64))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "+"
        ├── @ CallNode (location: (66...73))
        │   ├── receiver:
        │   │   @ CallNode (location: (66...69))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (66...69) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (70...71) = "-"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (72...73))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (72...73))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "-"
        ├── @ CallNode (location: (75...82))
        │   ├── receiver:
        │   │   @ CallNode (location: (75...78))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (75...78) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (79...80) = "/"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (81...82))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (81...82))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "/"
        ├── @ CallNode (location: (84...91))
        │   ├── receiver:
        │   │   @ CallNode (location: (84...87))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (84...87) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (88...89) = "<"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (90...91))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (90...91))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "<"
        ├── @ CallNode (location: (93...101))
        │   ├── receiver:
        │   │   @ CallNode (location: (93...96))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (93...96) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (97...99) = "<<"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (100...101))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (100...101))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "<<"
        ├── @ CallNode (location: (103...111))
        │   ├── receiver:
        │   │   @ CallNode (location: (103...106))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (103...106) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (107...109) = "<="
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (110...111))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (110...111))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "<="
        ├── @ CallNode (location: (113...122))
        │   ├── receiver:
        │   │   @ CallNode (location: (113...116))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (113...116) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (117...120) = "<=>"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (121...122))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (121...122))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "<=>"
        ├── @ CallNode (location: (124...132))
        │   ├── receiver:
        │   │   @ CallNode (location: (124...127))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (124...127) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (128...130) = "=="
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (131...132))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (131...132))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "=="
        ├── @ CallNode (location: (134...143))
        │   ├── receiver:
        │   │   @ CallNode (location: (134...137))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (134...137) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (138...141) = "==="
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (142...143))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (142...143))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "==="
        ├── @ CallNode (location: (145...153))
        │   ├── receiver:
        │   │   @ CallNode (location: (145...148))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (145...148) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (149...151) = "=~"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (152...153))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (152...153))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "=~"
        ├── @ CallNode (location: (155...162))
        │   ├── receiver:
        │   │   @ CallNode (location: (155...158))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (155...158) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (159...160) = ">"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (161...162))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (161...162))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: ">"
        ├── @ CallNode (location: (164...172))
        │   ├── receiver:
        │   │   @ CallNode (location: (164...167))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (164...167) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (168...170) = ">="
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (171...172))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (171...172))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: ">="
        ├── @ CallNode (location: (174...182))
        │   ├── receiver:
        │   │   @ CallNode (location: (174...177))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (174...177) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (178...180) = ">>"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (181...182))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (181...182))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: ">>"
        ├── @ CallNode (location: (184...191))
        │   ├── receiver:
        │   │   @ CallNode (location: (184...187))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (184...187) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (188...189) = "^"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (190...191))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (190...191))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "^"
        └── @ CallNode (location: (193...200))
            ├── receiver:
            │   @ CallNode (location: (193...196))
            │   ├── receiver: ∅
            │   ├── call_operator_loc: ∅
            │   ├── message_loc: (193...196) = "foo"
            │   ├── opening_loc: ∅
            │   ├── arguments: ∅
            │   ├── closing_loc: ∅
            │   ├── block: ∅
            │   ├── flags: variable_call
            │   └── name: "foo"
            ├── call_operator_loc: ∅
            ├── message_loc: (197...198) = "|"
            ├── opening_loc: ∅
            ├── arguments:
            │   @ ArgumentsNode (location: (199...200))
            │   └── arguments: (length: 1)
            │       └── @ IntegerNode (location: (199...200))
            │           └── flags: decimal
            ├── closing_loc: ∅
            ├── block: ∅
            ├── flags: ∅
            └── name: "|"
