How is encoding all the assumptions and invariants badly in eg a bunch of booleans and nullable pointers any better?