Least/greatest supertype/subtype matching