By Contract specifications. Programmers enable the run-time enforcement of contracts by either incorporating the jContractor class loader or by instantiating objects directly from the instrumented subclass through the jContractor factory. Programmers can use exactly the same syntax for invoking methods and passing object references regardless of whether contracts are present or not. It dates from a while after the completion of Green, but it's the oldest manual I've found. The library, source code, and documentation are available under a Free license. .
Percolation is effective at revealing bugs that result from inheritance and dynamic binding.
The likelihood of such bugs increases as class hierarchies are extended, patched, and reused. Automatic checking of superclass assertions is only supported by Eiffel. The percolation pattern allows superclass invariants, preconditions, and postconditions to be checked in subclass methods in without redundant code. It respects superclass encapsulation by providing a fixed interface to superclass assertions without direct access to superclass instance variables. Assertions cannot be inherited in any of the languages considered here, except Eiffel.