public TypeExpressionGenerator typeVar(String arg) {
   if (!container.getTypeParameters().contains(arg))
     throw new IllegalArgumentException(
         "unknown type var ["
             + arg
             + "]. "
             + container.getTypeName()
             + " only knows "
             + container.getTypeParameters());
   if (args == null) args = new ArrayList<>();
   args.add(arg);
   return this;
 }
 public TypeExpressionGenerator typeArg(Type typeArg) {
   container.addImport(typeArg);
   TypeExpressionGenerator sub = new TypeExpressionGenerator(container, typeArg);
   if (args == null) args = new ArrayList<>();
   args.add(sub);
   return sub;
 }
 public TypeExpressionGenerator(TypeGenerator container, Type type) {
   this(container, type.getSimpleName());
   container.addImport(type);
 }