Buggy code:
public abstract class AbstractFeatureHandler < T extends Annotation > extends AbstractJavacHandler < T > { public static final int PRIORITY = Integer . MIN_VALUE ; public AbstractFeatureHandler ( Class < T > annotationType ) { } protected int toModifier ( Access access ) { } protected boolean argumentTypesEquals ( JCMethodDecl method , List < JCVariableDecl > arguments ) { } protected boolean isExcludedFrom ( JCVariableDecl field , Class < ? extends Annotation > feature ) { } protected JCMethodDecl findConstructor ( List < JCVariableDecl > fieldsToBeInitialize ) { } protected List < JCVariableDecl > findFields ( int requiredModifiers , int excludedModifiers , Class < ? extends Annotation > excludeFeature , boolean notInitializedOnly ) { } protected JCExpression findSuperInterface ( Class < ? > interfaceType , List < JCExpression > superInterfaces ) { } protected List < String > findExcludeFields ( Class < ? extends Annotation > feature ) { } protected JCMethodDecl generateConstructor ( List < JCVariableDecl > fieldsToBeInitialize , int modifiers ) { List < JCTypeParameter > typeParameters = List . nil ( ) ; ListBuffer < JCVariableDecl > parameters = new ListBuffer < JCVariableDecl > ( ) ; List < JCExpression > thrown = List . nil ( ) ; ListBuffer < JCStatement > statements = new ListBuffer < JCStatement > ( ) ; for ( JCVariableDecl fieldToBeInitialize : fieldsToBeInitialize ) { String argumentName = NameResolver . resolvePropertyName ( sourceNode . getAst ( ) , fieldToBeInitialize . name . toString ( ) ) ; JCExpression argumentReference = maker . Ident ( sourceNode . toName ( argumentName ) ) ; JCExpression fieldReference = generateFieldReference ( fieldToBeInitialize ) ; <START_BUG> JCVariableDecl argument = maker . VarDef ( maker . Modifiers ( PARAMETER ) , fieldToBeInitialize . name , fieldToBeInitialize . vartype , null ) ; <END_BUG> parameters . append ( argument ) ; JCAssign assignment = maker . Assign ( fieldReference , argumentReference ) ; statements . append ( maker . Exec ( assignment ) ) ; } return maker . MethodDef ( maker . Modifiers ( modifiers ) , sourceNode . toName ( "<init>" ) , null , typeParameters , parameters . toList ( ) , thrown , maker . Block ( 0 , statements . toList ( ) ) , null ) ; } protected JCMethodDecl generateGetter ( JCVariableDecl field , long modifiers ) { } protected JCMethodDecl generateSetter ( JCVariableDecl field , long modifiers ) { } protected JCExpression generateFieldReference ( JCVariableDecl field ) { } protected void supplementFinalModifier ( ) { } protected void supplementConstructor ( Access access , List < JCVariableDecl > fieldsToBeInitialize ) { } protected void supplementUncallableConstructor ( ) { } protected void supplementGetter ( JCVariableDecl field , Access access ) { } protected void supplementSetter ( JCVariableDecl field , Access access ) { } protected void supplementSuperInterface ( Class < ? > interfaceType ) { } protected void supplementSuppressWaring ( String suppressed ) { } protected void supplementEqualsAndHashCode ( boolean evaluateSuperclass ) { } protected void supplementToString ( boolean evaluateSuperclass ) { } protected void injectMethod ( JCMethodDecl method ) { } protected JCTree getExtendsClause ( JCClassDecl clazz ) { } @ SuppressWarnings ( "unchecked" ) protected String getJavadocComment ( JCTree tree ) { } @ SuppressWarnings ( "unchecked" ) protected void setJavadocComment ( final JCTree tree , final String docComment ) { } private Object [ ] buildJavadocCommentArgments ( JCTree tree , String name , List < JCAnnotation > annotations ) { } private static class Java8Comment { static String get ( Object docComments , JCTree tree ) { } static void set ( Object docComments , final JCTree tree , final String docComment ) { } } }

Fix:
JCVariableDecl argument = maker . VarDef ( maker . Modifiers ( PARAMETER ) , sourceNode . toName ( argumentName ) , fieldToBeInitialize . vartype , null ) ;