Minor style note: Since you always have 2 children you can unpack simply by
```
op1, op2 = self.children
```