Predicate Chaining::designedForChaining

Find methods that always return this, or interface methods that are overridden by such methods.

For native or compiled methods (which have no body), we approximate this by requiring that the method returns a subtype of its declaring type, is not declared in an immutable type, and that every method overriding it is also designed for chaining.

predicate designedForChaining(Method m)