Buggy code:
public class MethodDefinitionBuilder { private final AbstractTransformer gen ; private final String name ; private long modifiers ; private boolean isActual ; private boolean isFormal ; private TypedDeclaration resultType ; private JCExpression resultTypeExpr ; private final ListBuffer < JCAnnotation > annotations = ListBuffer . lb ( ) ; private final ListBuffer < JCTypeParameter > typeParams = ListBuffer . lb ( ) ; private final ListBuffer < JCExpression > typeParamAnnotations = ListBuffer . lb ( ) ; private final ListBuffer < JCVariableDecl > params = ListBuffer . lb ( ) ; private ListBuffer < JCStatement > body = ListBuffer . lb ( ) ; public static MethodDefinitionBuilder method ( AbstractTransformer gen , boolean isMember , String name ) { } public static MethodDefinitionBuilder systemMethod ( AbstractTransformer gen , String name ) { } public static MethodDefinitionBuilder constructor ( AbstractTransformer gen ) { } public static MethodDefinitionBuilder main ( AbstractTransformer gen ) { } private MethodDefinitionBuilder ( AbstractTransformer gen , String name ) { } public JCMethodDecl build ( ) { } private Name makeName ( String name ) { } private JCBlock makeBody ( ListBuffer < JCStatement > body2 ) { } private JCExpression makeResultType ( TypedDeclaration resultType ) { } public MethodDefinitionBuilder modifiers ( long ... modifiers ) { } public MethodDefinitionBuilder annotations ( List < JCTree . JCAnnotation > annotations ) { } public MethodDefinitionBuilder typeParameter ( String name , java . util . List < ProducedType > satisfiedTypes , boolean covariant , boolean contravariant ) { ListBuffer < JCExpression > bounds = new ListBuffer < JCExpression > ( ) ; for ( ProducedType t : satisfiedTypes ) { if ( ! ( gen . willEraseToObject ( t ) ) ) { <START_BUG> bounds . append ( gen . makeJavaType ( t ) ) ; <END_BUG> } } typeParams . append ( gen . make ( ) . TypeParameter ( gen . names ( ) . fromString ( name ) , bounds . toList ( ) ) ) ; typeParamAnnotations . append ( gen . makeAtTypeParameter ( name , satisfiedTypes , covariant , contravariant ) ) ; return this ; } public MethodDefinitionBuilder typeParameter ( Tree . TypeParameterDeclaration param ) { } public MethodDefinitionBuilder parameters ( List < JCVariableDecl > decls ) { } public MethodDefinitionBuilder parameter ( JCVariableDecl decl ) { } public MethodDefinitionBuilder parameter ( long modifiers , String name , TypedDeclaration decl ) { } public MethodDefinitionBuilder parameter ( long modifiers , String name , JCExpression paramType , List < JCAnnotation > annots ) { } public MethodDefinitionBuilder parameter ( Tree . Parameter param ) { } public MethodDefinitionBuilder parameter ( Parameter param ) { } public MethodDefinitionBuilder isActual ( boolean isActual ) { } public MethodDefinitionBuilder isFormal ( boolean isFormal ) { } public MethodDefinitionBuilder body ( JCStatement statement ) { } public MethodDefinitionBuilder body ( List < JCStatement > body ) { } MethodDefinitionBuilder noBody ( ) { } public MethodDefinitionBuilder block ( JCBlock block ) { } public MethodDefinitionBuilder resultType ( TypedDeclaration resultType ) { } public MethodDefinitionBuilder resultType ( JCExpression resultType , TypedDeclaration typeDecl ) { } }

Fix:
bounds . append ( gen . makeJavaType ( t , NO_PRIMITIVES ) ) ;