Closing program

I tried to explain this to my best understanding here, and gave 3 alternatives. Hopefully its clear!

As far as I could ever determine, dog.close() is not a cleanup method, it is a terminal control-flow primitive, it assumes it is called from top-level (parent) code and it was never meant to return.