More robust handling of method override among abstract hierarchy
Use all provided classes as sources in genAndApply
Rename Source -> Model
Minor : make TypeInfo.VOID an inner class