Buggy code:
class ASTConverter { protected AST ast ; protected Comment [ ] commentsTable ; char [ ] compilationUnitSource ; protected DocCommentParser docParser ; protected boolean insideComments ; protected IProgressMonitor monitor ; protected Set pendingNameScopeResolution ; protected Set pendingThisExpressionScopeResolution ; protected boolean resolveBindings ; Scanner scanner ; private DefaultCommentMapper commentMapper ; public ASTConverter ( Map options , boolean resolveBindings , IProgressMonitor monitor ) { } protected void adjustSourcePositionsForParent ( Expression expression ) { } protected void buildBodyDeclarations ( EnumConstant enumConstant , EnumConstantDeclaration enumConstantDeclaration ) { } protected void buildBodyDeclarations ( org . eclipse . jdt . internal . compiler . ast . AnnotationTypeDeclaration typeDeclaration , AnnotationTypeDeclaration typeDecl ) { } protected void buildBodyDeclarations ( org . eclipse . jdt . internal . compiler . ast . EnumDeclaration enumDeclaration2 , EnumDeclaration enumDeclaration ) { } protected void buildBodyDeclarations ( TypeDeclaration expression , AnonymousClassDeclaration anonymousClassDeclaration ) { } protected void buildBodyDeclarations ( TypeDeclaration typeDeclaration , TypeDeclaration typeDecl ) { } void buildCommentsTable ( CompilationUnit compilationUnit , int [ ] [ ] comments ) { } protected void checkAndAddMultipleFieldDeclaration ( FieldDeclaration [ ] fields , int index , List bodyDeclarations ) { } protected void checkAndAddMultipleLocalDeclaration ( Statement [ ] stmts , int index , List blockStatements ) { } protected void checkCanceled ( ) { } protected void completeRecord ( ArrayType arrayType , ASTNode astNode ) { } public ASTNode convert ( AbstractMethodDeclaration methodDeclaration ) { } public ClassInstanceCreation convert ( AllocationExpression expression ) { } public Expression convert ( AND_AND_Expression expression ) { } public AnnotationTypeDeclaration convert ( org . eclipse . jdt . internal . compiler . ast . AnnotationTypeDeclaration typeDeclaration ) { } public ASTNode convert ( org . eclipse . jdt . internal . compiler . ast . AnnotationTypeMemberDeclaration annotationTypeMemberDeclaration ) { } public SingleVariableDeclaration convert ( Argument argument ) { SingleVariableDeclaration variableDecl = this . ast . newSingleVariableDeclaration ( ) ; if ( ( ( argument . modifiers ) & ( CompilerModifiers . AccJustFlag ) ) != 0 ) { setModifiers ( variableDecl , argument ) ; } SimpleName name = this . ast . newSimpleName ( new String ( argument . name ) ) ; int start = argument . sourceStart ; int nameEnd = argument . sourceEnd ; name . setSourceRange ( start , ( ( nameEnd - start ) + 1 ) ) ; variableDecl . setName ( name ) ; final int typeSourceEnd = argument . type . sourceEnd ; final int extraDimensions = retrieveExtraDimension ( ( nameEnd + 1 ) , typeSourceEnd ) ; variableDecl . setExtraDimensions ( extraDimensions ) ; <START_BUG> final boolean isVarArgs = argument . isVarArgs ; <END_BUG> if ( isVarArgs && ( extraDimensions == 0 ) ) { argument . type . sourceEnd = retrieveEllipsisStartPosition ( argument . type . sourceStart , typeSourceEnd ) ; } Type type = convertType ( argument . type ) ; int typeEnd = ( ( type . getStartPosition ( ) ) + ( type . getLength ( ) ) ) - 1 ; int rightEnd = Math . max ( typeEnd , argument . declarationSourceEnd ) ; if ( isVarArgs ) { setTypeForSingleVariableDeclaration ( variableDecl , type , ( extraDimensions + 1 ) ) ; } else { setTypeForSingleVariableDeclaration ( variableDecl , type , extraDimensions ) ; } variableDecl . setSourceRange ( argument . declarationSourceStart , ( ( rightEnd - ( argument . declarationSourceStart ) ) + 1 ) ) ; if ( isVarArgs ) { switch ( this . ast . apiLevel ) { case AST . JLS2 : variableDecl . setFlags ( ( ( variableDecl . getFlags ( ) ) | ( ASTNode . MALFORMED ) ) ) ; break ; case AST . JLS3 : variableDecl . setVarargs ( true ) ; } } if ( this . resolveBindings ) { recordNodes ( name , argument ) ; recordNodes ( variableDecl , argument ) ; variableDecl . resolveBinding ( ) ; } return variableDecl ; } public Annotation convert ( org . eclipse . jdt . internal . compiler . ast . Annotation annotation ) { } public ArrayCreation convert ( ArrayAllocationExpression expression ) { } public ArrayInitializer convert ( org . eclipse . jdt . internal . compiler . ast . ArrayInitializer expression ) { } public ArrayAccess convert ( ArrayReference reference ) { } public AssertStatement convert ( org . eclipse . jdt . internal . compiler . ast . AssertStatement statement ) { } public Assignment convert ( org . eclipse . jdt . internal . compiler . ast . Assignment expression ) { } public TypeDeclaration convert ( ASTNode [ ] nodes ) { } public Expression convert ( BinaryExpression expression ) { } public Block convert ( org . eclipse . jdt . internal . compiler . ast . Block statement ) { } public BreakStatement convert ( org . eclipse . jdt . internal . compiler . ast . BreakStatement statement ) { } public SwitchCase convert ( CaseStatement statement ) { } public CastExpression convert ( org . eclipse . jdt . internal . compiler . ast . CastExpression expression ) { } public CharacterLiteral convert ( CharLiteral expression ) { } public Expression convert ( ClassLiteralAccess expression ) { } public CompilationUnit convert ( CompilationUnitDeclaration unit , char [ ] source ) { } public Assignment convert ( CompoundAssignment expression ) { } public ConditionalExpression convert ( org . eclipse . jdt . internal . compiler . ast . ConditionalExpression expression ) { } public ContinueStatement convert ( org . eclipse . jdt . internal . compiler . ast . ContinueStatement statement ) { } public DoStatement convert ( org . eclipse . jdt . internal . compiler . ast . DoStatement statement ) { } public NumberLiteral convert ( DoubleLiteral expression ) { } public EmptyStatement convert ( org . eclipse . jdt . internal . compiler . ast . EmptyStatement statement ) { } public EnumConstantDeclaration convert ( EnumConstant enumConstant ) { }

Fix:
final boolean isVarArgs = argument . isVarArgs ( ) ;