Buggy code:
static final char [ ] JAVA_LANG_OBJECT = "java.lang.Object" . toCharArray ( ) ; NameReference [ ] unknownRefs ; int unknownRefsCounter ; SourceElementParser . LocalDeclarationVisitor localDeclarationVisitor = null ; CompilerOptions options ; public class LocalDeclarationVisitor extends ASTVisitor { public boolean visit ( TypeDeclaration typeDeclaration , BlockScope scope ) { } public boolean visit ( TypeDeclaration typeDeclaration , ClassScope scope ) { } } public SourceElementParser ( final ISourceElementRequestor requestor , IProblemFactory problemFactory , CompilerOptions options ) { } public SourceElementParser ( final ISourceElementRequestor requestor , IProblemFactory problemFactory , CompilerOptions options , boolean reportLocalDeclarations ) { } public void checkComment ( ) { } private void acceptJavadocTypeReference ( Expression expression ) { } protected void classInstanceCreation ( boolean alwaysQualified ) { } protected void consumeConstructorHeaderName ( ) { } protected void consumeConstructorHeaderNameWithTypeParameters ( ) { } protected void consumeExitVariableWithInitialization ( ) { } protected void consumeExitVariableWithoutInitialization ( ) { } protected void consumeFieldAccess ( boolean isSuperAccess ) { } protected void consumeMethodHeaderName ( ) { } protected void consumeMethodHeaderNameWithTypeParameters ( ) { } protected void consumeMethodInvocationName ( ) { } protected void consumeMethodInvocationNameWithTypeArguments ( ) { } protected void consumeMethodInvocationPrimary ( ) { } protected void consumeMethodInvocationPrimaryWithTypeArguments ( ) { } protected void consumeMethodInvocationSuper ( ) { } protected void consumeMethodInvocationSuperWithTypeArguments ( ) { } protected void consumeSingleStaticImportDeclarationName ( ) { } protected void consumeSingleTypeImportDeclarationName ( ) { } protected void consumeStaticImportOnDemandDeclarationName ( ) { } protected void consumeTypeImportOnDemandDeclarationName ( ) { } public MethodDeclaration convertToMethodDeclaration ( ConstructorDeclaration c , CompilationResult compilationResult ) { } protected FieldDeclaration createFieldDeclaration ( char [ ] fieldName , int sourceStart , int sourceEnd ) { } protected CompilationUnitDeclaration endParse ( int act ) { } public TypeReference getTypeReference ( int dim ) { } public NameReference getUnspecifiedReference ( ) { } public NameReference getUnspecifiedReferenceOptimized ( ) { } public void notifySourceElementRequestor ( CompilationUnitDeclaration parsedUnit ) { } private void notifyAllUnknownReferences ( ) { } public void notifySourceElementRequestor ( AbstractMethodDeclaration methodDeclaration ) { boolean isInRange = ( ( scanner . initialPosition ) <= ( methodDeclaration . declarationSourceStart ) ) && ( ( scanner . eofPosition ) >= ( methodDeclaration . declarationSourceEnd ) ) ; if ( methodDeclaration . isClinit ( ) ) { this . visitIfNeeded ( methodDeclaration ) ; return ; } if ( methodDeclaration . isDefaultConstructor ( ) ) { if ( reportReferenceInfo ) { ConstructorDeclaration constructorDeclaration = ( ( ConstructorDeclaration ) ( methodDeclaration ) ) ; ExplicitConstructorCall constructorCall = constructorDeclaration . constructorCall ; if ( constructorCall != null ) { switch ( constructorCall . accessMode ) { case ExplicitConstructorCall . This : requestor . acceptConstructorReference ( typeNames [ ( ( nestedTypeIndex ) - 1 ) ] , ( ( constructorCall . arguments ) == null ? 0 : constructorCall . arguments . length ) , constructorCall . sourceStart ) ; break ; case ExplicitConstructorCall . Super : case ExplicitConstructorCall . ImplicitSuper : requestor . acceptConstructorReference ( superTypeNames [ ( ( nestedTypeIndex ) - 1 ) ] , ( ( constructorCall . arguments ) == null ? 0 : constructorCall . arguments . length ) , constructorCall . sourceStart ) ; break ; } } } return ; } char [ ] [ ] argumentTypes = null ; char [ ] [ ] argumentNames = null ; boolean isVarArgs = false ; Argument [ ] arguments = methodDeclaration . arguments ; if ( arguments != null ) { int argumentLength = arguments . length ; argumentTypes = new char [ argumentLength ] [ ] ; argumentNames = new char [ argumentLength ] [ ] ; for ( int i = 0 ; i < argumentLength ; i ++ ) { argumentTypes [ i ] = CharOperation . concatWith ( arguments [ i ] . type . getParameterizedTypeName ( ) , '.' ) ; argumentNames [ i ] = arguments [ i ] . name ; } <START_BUG> isVarArgs = arguments [ ( argumentLength - 1 ) ] . isVarArgs ; <END_BUG> } char [ ] [ ] thrownExceptionTypes = null ; TypeReference [ ] thrownExceptions = methodDeclaration . thrownExceptions ; if ( thrownExceptions != null ) { int thrownExceptionLength = thrownExceptions . length ; thrownExceptionTypes = new char [ thrownExceptionLength ] [ ] ; for ( int i = 0 ; i < thrownExceptionLength ; i ++ ) { thrownExceptionTypes [ i ] = CharOperation . concatWith ( thrownExceptions [ i ] . getParameterizedTypeName ( ) , '.' ) ; } } int selectorSourceEnd = - 1 ; if ( methodDeclaration . isConstructor ( ) ) { if ( methodDeclaration instanceof SourceConstructorDeclaration ) { selectorSourceEnd = ( ( SourceConstructorDeclaration ) ( methodDeclaration ) ) . selectorSourceEnd ; } if ( isInRange ) { requestor . enterConstructor ( methodDeclaration . declarationSourceStart , methodDeclaration . modifiers , methodDeclaration . selector , methodDeclaration . sourceStart , selectorSourceEnd , argumentTypes , argumentNames , thrownExceptionTypes ) ; notifySourceElementRequestor ( methodDeclaration . typeParameters ( ) ) ; } if ( reportReferenceInfo ) { ConstructorDeclaration constructorDeclaration = ( ( ConstructorDeclaration ) ( methodDeclaration ) ) ; ExplicitConstructorCall constructorCall = constructorDeclaration . constructorCall ; if ( constructorCall != null ) { switch ( constructorCall . accessMode ) { case ExplicitConstructorCall . This : requestor . acceptConstructorReference ( typeNames [ ( ( nestedTypeIndex ) - 1 ) ] , ( ( constructorCall . arguments ) == null ? 0 : constructorCall . arguments . length ) , constructorCall . sourceStart ) ; break ; case ExplicitConstructorCall . Super : case ExplicitConstructorCall . ImplicitSuper : requestor . acceptConstructorReference ( superTypeNames [ ( ( nestedTypeIndex ) - 1 ) ] , ( ( constructorCall . arguments ) == null ? 0 : constructorCall . arguments . length ) , constructorCall . sourceStart ) ; break ; } } } this . visitIfNeeded ( methodDeclaration ) ; if ( isInRange ) { requestor . exitConstructor ( methodDeclaration . declarationSourceEnd ) ; } return ; } if ( methodDeclaration instanceof SourceMethodDeclaration ) { selectorSourceEnd = ( ( SourceMethodDeclaration ) ( methodDeclaration ) ) . selectorSourceEnd ; }

Fix:
isVarArgs = arguments [ ( argumentLength - 1 ) ] . isVarArgs ( ) ;