you are trying to use invariants for the things that invariants can't (and must not) check. invariants are meant for checking *internal**object* *consistency*. NOT correctness. NOT applicability. ONLYconsistency. object can be in "inapplicable" state, but still consistent.
Then I must have misunderstood the documentation, I apologize, I thought the point of invariant was to ensure correctness of the object's state. I'll go ahead and report the bug.
