How do you feel about having the range be an method instead of being directly on the Box instead?  ie instead of
```for (Box* b : *container)```
do
```for (Box* b : container->pyElements())```
just to make it clear that we're doing a Python-level iteration here?  You can check out exprGuards() in irgenerator.h for how to use an LLVM helper class to do that nicely.