 Functions that can deal with either type of object will expect an , and functions that use - or -specific requirements will use the descendant classes.However, is then no longer an subclass, leading to the "a is not a sort of " situation described above.This solves the problem at a stroke.