Visiting an unlisted `Statement` will hit whatever the method for `Statement *` does, which is an assert by default.  A compile-time error would be nice, but I don't know of a way to do that.  This is the same as the current situation with virtual functions.