@ ProgramNode (location: (0...64))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...64))
    └── body: (length: 4)
        ├── @ CallOperatorWriteNode (location: (0...14))
        │   ├── 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: (3...4) = "."
        │   ├── message_loc: (4...5) = "A"
        │   ├── opening_loc: ∅
        │   ├── arguments: ∅
        │   ├── closing_loc: ∅
        │   ├── flags: ∅
        │   ├── read_name: "A"
        │   ├── write_name: "A="
        │   ├── operator: :+
        │   ├── operator_loc: (6...8) = "+="
        │   └── value:
        │       @ CallNode (location: (9...14))
        │       ├── receiver: ∅
        │       ├── call_operator_loc: ∅
        │       ├── message_loc: (9...10) = "m"
        │       ├── opening_loc: ∅
        │       ├── arguments:
        │       │   @ ArgumentsNode (location: (11...14))
        │       │   └── arguments: (length: 1)
        │       │       └── @ CallNode (location: (11...14))
        │       │           ├── receiver: ∅
        │       │           ├── call_operator_loc: ∅
        │       │           ├── message_loc: (11...14) = "foo"
        │       │           ├── opening_loc: ∅
        │       │           ├── arguments: ∅
        │       │           ├── closing_loc: ∅
        │       │           ├── block: ∅
        │       │           ├── flags: variable_call
        │       │           └── name: "foo"
        │       ├── closing_loc: ∅
        │       ├── block: ∅
        │       ├── flags: ∅
        │       └── name: "m"
        ├── @ CallOperatorWriteNode (location: (16...30))
        │   ├── receiver:
        │   │   @ CallNode (location: (16...19))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (16...19) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: variable_call
        │   │   └── name: "foo"
        │   ├── call_operator_loc: (19...20) = "."
        │   ├── message_loc: (20...21) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments: ∅
        │   ├── closing_loc: ∅
        │   ├── flags: ∅
        │   ├── read_name: "a"
        │   ├── write_name: "a="
        │   ├── operator: :+
        │   ├── operator_loc: (22...24) = "+="
        │   └── value:
        │       @ CallNode (location: (25...30))
        │       ├── receiver: ∅
        │       ├── call_operator_loc: ∅
        │       ├── message_loc: (25...26) = "m"
        │       ├── opening_loc: ∅
        │       ├── arguments:
        │       │   @ ArgumentsNode (location: (27...30))
        │       │   └── arguments: (length: 1)
        │       │       └── @ CallNode (location: (27...30))
        │       │           ├── receiver: ∅
        │       │           ├── call_operator_loc: ∅
        │       │           ├── message_loc: (27...30) = "foo"
        │       │           ├── opening_loc: ∅
        │       │           ├── arguments: ∅
        │       │           ├── closing_loc: ∅
        │       │           ├── block: ∅
        │       │           ├── flags: variable_call
        │       │           └── name: "foo"
        │       ├── closing_loc: ∅
        │       ├── block: ∅
        │       ├── flags: ∅
        │       └── name: "m"
        ├── @ ConstantPathOperatorWriteNode (location: (32...47))
        │   ├── target:
        │   │   @ ConstantPathNode (location: (32...38))
        │   │   ├── parent:
        │   │   │   @ CallNode (location: (32...35))
        │   │   │   ├── receiver: ∅
        │   │   │   ├── call_operator_loc: ∅
        │   │   │   ├── message_loc: (32...35) = "foo"
        │   │   │   ├── opening_loc: ∅
        │   │   │   ├── arguments: ∅
        │   │   │   ├── closing_loc: ∅
        │   │   │   ├── block: ∅
        │   │   │   ├── flags: variable_call
        │   │   │   └── name: "foo"
        │   │   ├── child:
        │   │   │   @ ConstantReadNode (location: (37...38))
        │   │   │   └── name: :A
        │   │   └── delimiter_loc: (35...37) = "::"
        │   ├── operator_loc: (39...41) = "+="
        │   ├── value:
        │   │   @ CallNode (location: (42...47))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (42...43) = "m"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments:
        │   │   │   @ ArgumentsNode (location: (44...47))
        │   │   │   └── arguments: (length: 1)
        │   │   │       └── @ CallNode (location: (44...47))
        │   │   │           ├── receiver: ∅
        │   │   │           ├── call_operator_loc: ∅
        │   │   │           ├── message_loc: (44...47) = "foo"
        │   │   │           ├── opening_loc: ∅
        │   │   │           ├── arguments: ∅
        │   │   │           ├── closing_loc: ∅
        │   │   │           ├── block: ∅
        │   │   │           ├── flags: variable_call
        │   │   │           └── name: "foo"
        │   │   ├── closing_loc: ∅
        │   │   ├── block: ∅
        │   │   ├── flags: ∅
        │   │   └── name: "m"
        │   └── operator: :+
        └── @ CallOperatorWriteNode (location: (49...64))
            ├── receiver:
            │   @ CallNode (location: (49...52))
            │   ├── receiver: ∅
            │   ├── call_operator_loc: ∅
            │   ├── message_loc: (49...52) = "foo"
            │   ├── opening_loc: ∅
            │   ├── arguments: ∅
            │   ├── closing_loc: ∅
            │   ├── block: ∅
            │   ├── flags: variable_call
            │   └── name: "foo"
            ├── call_operator_loc: (52...54) = "::"
            ├── message_loc: (54...55) = "a"
            ├── opening_loc: ∅
            ├── arguments: ∅
            ├── closing_loc: ∅
            ├── flags: ∅
            ├── read_name: "a"
            ├── write_name: "a="
            ├── operator: :+
            ├── operator_loc: (56...58) = "+="
            └── value:
                @ CallNode (location: (59...64))
                ├── receiver: ∅
                ├── call_operator_loc: ∅
                ├── message_loc: (59...60) = "m"
                ├── opening_loc: ∅
                ├── arguments:
                │   @ ArgumentsNode (location: (61...64))
                │   └── arguments: (length: 1)
                │       └── @ CallNode (location: (61...64))
                │           ├── receiver: ∅
                │           ├── call_operator_loc: ∅
                │           ├── message_loc: (61...64) = "foo"
                │           ├── opening_loc: ∅
                │           ├── arguments: ∅
                │           ├── closing_loc: ∅
                │           ├── block: ∅
                │           ├── flags: variable_call
                │           └── name: "foo"
                ├── closing_loc: ∅
                ├── block: ∅
                ├── flags: ∅
                └── name: "m"
