Partially split out generation of class type