The crux is that method conditions are inherited by overriding methods. The easy application of this is shown by postconditions. Then the postcondition that is applicable to foo' is the one specified for foo . So, if either A or B is not met, the postcondition for foo'' already fails. With method preconditions, things are a little different.
Runtime class is set.
This raises a condition, which must be handled or the program will exit, printing which method of which object failed. You can of course override this method in your own classes, or replace the default implementation if the default behaviour does not suite your needs. Then you can print a backtrace to see where and how the actual problem happened. Similar to precondition checking, a failed postcondition check invokes the method postconditionFailed . Unless directed to do otherwise, the TOM compiler will include the method condition checks in the code that it outputs.