Reason:
The problem is that there is a declaration of an object (the boolean
"pushed") without scope. Thus, the scope of the object could traverse
the break statement and apply to the next case. Consider this - what is
the scope of obj1 in the code below? It starts at the first label, and
goes until the end of the case block. So it's in scope at CHOICE_B.
But its constructor wasn't called....