private static String formalTypeParametersString(TypeElement type) {
    List<? extends TypeParameterElement> typeParameters = type.getTypeParameters();
    if (typeParameters.isEmpty()) {
      return "";
    }
    StringBuilder sb = new StringBuilder("<");
    String sep = "";
    for (TypeParameterElement typeParameter : typeParameters) {
      sb.append(sep);
      sep = ", ";
      appendTypeParameterWithBounds(typeParameter, sb);
    }
    return sb.append(">").toString();
  }
An AutoValue extension that generates a subclass that does nothing useful.
value/src/it/functional/src/test/java/com/google/auto/value/gwt/EmptyExtension.java