Buggy code:
private void findFields ( char [ ] fieldName , ReferenceBinding receiverType , Scope scope , ObjectVector fieldsFound , ObjectVector localsFound , boolean onlyStaticFields , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall ) { } private void findFieldsAndMethods ( char [ ] token , TypeBinding receiverType , Scope scope , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall ) { } private void findImports ( CompletionOnImportReference importReference ) { } private void findKeywords ( char [ ] keyword , char [ ] [ ] choices , Scope scope ) { } private void findMemberTypes ( char [ ] typeName , ReferenceBinding [ ] memberTypes , ObjectVector typesFound , ReferenceBinding receiverType , SourceTypeBinding invocationType ) { } private void findMemberTypes ( char [ ] typeName , ReferenceBinding receiverType , Scope scope , SourceTypeBinding typeInvocation ) { } private void findIntefacesMethods ( char [ ] selector , TypeBinding [ ] argTypes , ReferenceBinding receiverType , ReferenceBinding [ ] itsInterfaces , Scope scope , ObjectVector methodsFound , boolean onlyStaticMethods , boolean exactMatch , boolean isCompletingDeclaration , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall ) { } private void findImplicitMessageSends ( char [ ] token , TypeBinding [ ] argTypes , Scope scope , InvocationSite invocationSite , Scope invocationScope ) { } private void findLocalMethods ( char [ ] methodName , TypeBinding [ ] argTypes , MethodBinding [ ] methods , Scope scope , ObjectVector methodsFound , boolean onlyStaticMethods , boolean exactMatch , ReferenceBinding receiverType , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall ) { } private void findLocalMethodDeclarations ( char [ ] methodName , MethodBinding [ ] methods , Scope scope , ObjectVector methodsFound , boolean onlyStaticMethods , boolean exactMatch , ReferenceBinding receiverType ) { } private void findMethods ( char [ ] selector , TypeBinding [ ] argTypes , ReferenceBinding receiverType , Scope scope , ObjectVector methodsFound , boolean onlyStaticMethods , boolean exactMatch , boolean isCompletingDeclaration , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall ) { } private char [ ] [ ] findMethodParameterNames ( MethodBinding method , char [ ] [ ] parameterTypeNames ) { } private void findNestedTypes ( char [ ] typeName , SourceTypeBinding currentType , Scope scope ) { } private void findPackages ( CompletionOnPackageReference packageStatement ) { } private void findTypesAndPackages ( char [ ] token , Scope scope ) { } private void findTypesAndSubpackages ( char [ ] token , PackageBinding packageBinding ) { } private void findVariablesAndMethods ( char [ ] token , Scope scope , InvocationSite invocationSite , Scope invocationScope ) { } private void findVariableName ( char [ ] token , char [ ] qualifiedPackageName , char [ ] qualifiedSourceName , char [ ] sourceName , char [ ] [ ] excludeNames ) { if ( ( sourceName == null ) || ( ( sourceName . length ) == 0 ) ) return ; if ( CharOperation . endsWith ( sourceName , new char [ ] { '[' , ']' } ) ) { sourceName = CharOperation . subarray ( sourceName , 0 , ( ( sourceName . length ) - 2 ) ) ; } char [ ] name = null ; try { nameScanner . setSourceBuffer ( sourceName ) ; switch ( nameScanner . getNextToken ( ) ) { case TokenNameint : case TokenNamebyte : case TokenNameshort : case TokenNamechar : case TokenNamelong : case TokenNamefloat : case TokenNamedouble : if ( ( token != null ) && ( ( token . length ) != 0 ) ) return ; name = computeBaseNames ( sourceName [ 0 ] , excludeNames ) ; break ; case TokenNameboolean : if ( ( token != null ) && ( ( token . length ) != 0 ) ) return ; name = computeBaseNames ( 'z' , excludeNames ) ; break ; } if ( name != null ) { requestor . acceptVariableName ( qualifiedPackageName , qualifiedSourceName , name , name , startPosition , endPosition ) ; return ; } } catch ( InvalidInputException e ) { } char [ ] [ ] names = computeNames ( sourceName ) ; next : for ( int i = 0 ; i < ( names . length ) ; i ++ ) { name = names [ i ] ; if ( ! ( CharOperation . prefixEquals ( token , name , false ) ) ) continue next ; try { nameScanner . setSourceBuffer ( name ) ; if ( ( nameScanner . getNextToken ( ) ) != ( TokenNameIdentifier ) ) continue next ; } catch ( InvalidInputException e ) { continue next ; } int count = 2 ; char [ ] originalName = name ; for ( int j = 0 ; j < ( excludeNames . length ) ; j ++ ) { if ( CharOperation . equals ( name , excludeNames [ j ] , false ) ) { name = CharOperation . concat ( originalName , String . valueOf ( ( count ++ ) ) . toCharArray ( ) ) ; <START_BUG> i = 0 ; <END_BUG> } } requestor . acceptVariableName ( qualifiedPackageName , qualifiedSourceName , name , name , startPosition , endPosition ) ; } } private void findVariableNames ( char [ ] name , TypeReference type , char [ ] [ ] excludeNames ) { } public AssistParser getParser ( ) { } private boolean mustQualifyType ( char [ ] packageName , char [ ] typeName ) { } protected void reset ( ) { } private void setSourceRange ( int start , int end ) { } private char [ ] computeBaseNames ( char firstName , char [ ] [ ] excludeNames ) { } private char [ ] [ ] computeNames ( char [ ] sourceName ) { } private char [ ] computePrefix ( SourceTypeBinding declarationType , SourceTypeBinding invocationType , boolean isStatic ) { } private boolean isEnclosed ( ReferenceBinding possibleEnclosingType , ReferenceBinding type ) { } }

Fix:
j = 0 ;