The location method, for containers, is how the PAW does it. Every object in the PAW that's a container, needs a corresponding location, where stored objects are located. It's a rather clever little 'hack'. When you program in PAW, you get used to thinking outside the box (or container... or indeed, location). The building blocks in that system are so simple but you can string them together to make quite complicated systems.
An alternative to using a boolean, in your case, would be to simply have both an 'box_open' and 'box_close' object, and swap between them, using that as the way of checking the status of open/close. In your case, though, I have a feeling the boolean check might be simpler... although it would probably work out about the same in terms of lines of code.