collect generaliz element subtyp object cl cl classifi illeg argument except collect generaliz element result arrai list generaliz element collect gener gen model facad special cl gener gen gen result add gen child invalid object except invalid element except result 