code: public static BaseType createGenericClass(Class<?> type)
    {
      TypeVariable<?> []typeParam = type.getTypeParameters();
        
      if (typeParam == null || typeParam.length == 0)
        return ClassType.create(type);
  
      BaseType []args = new BaseType[typeParam.length];
  
      HashMap<String,BaseType> newParamMap = new HashMap<String,BaseType>();
      String paramDeclName = null;
  
      for (int i = 0; i < args.length; i++) {
        args[i] = create(typeParam[i], 
                         newParamMap, paramDeclName, 
                         ClassFill.TARGET);
  
        if (args[i] == null) {
          throw new NullPointerException("unsupported BaseType: " + type);
        }
  
        newParamMap.put(typeParam[i].getName(), args[i]);
      }
      
      // ioc/07f2
  
      return new GenericParamType(type, args, newParamMap);
    }
docs: Create a class-based type, where any parameters are filled with the
  variables, not Object.