Buggy code:
private [ ] localVariableTypeNames , char [ ] [ ] localVariableNames , int [ ] localVariableModifiers , boolean isStatic ) { } private Initializer parseSnippeInitializer ( char [ ] snippet , int position , char [ ] [ ] localVariableTypeNames , char [ ] [ ] localVariableNames , int [ ] localVariableModifiers , boolean isStatic ) { } public void complete ( ICompilationUnit sourceUnit , int completionPosition , int pos ) { } private TypeBinding [ ] computeTypes ( Expression [ ] arguments , BlockScope scope ) { } private void findAnonymousType ( ReferenceBinding currentType , TypeBinding [ ] argTypes , Scope scope , InvocationSite invocationSite ) { } private void findClassField ( char [ ] token , TypeBinding receiverType , Scope scope ) { } private void findExplicitConstructors ( char [ ] name , ReferenceBinding currentType , MethodScope scope , InvocationSite invocationSite ) { } private void findConstructors ( ReferenceBinding currentType , TypeBinding [ ] argTypes , Scope scope , InvocationSite invocationSite , boolean forAnonymousType ) { } private void findFields ( char [ ] fieldName , FieldBinding [ ] fields , Scope scope , ObjectVector fieldsFound , ObjectVector localsFound , boolean onlyStaticFields , ReferenceBinding receiverType , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall ) { } 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 , boolean superCall ) { } private void findImports ( CompletionOnImportReference importReference ) { } private void findKeywords ( char [ ] keyword , char [ ] [ ] choices ) { } private void findKeywordsForMember ( char [ ] token , int modifiers ) { } 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 , boolean superCall ) { } 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 , boolean superCall ) { ObjectVector newMethodsFound = new ObjectVector ( ) ; int methodLength = methodName . length ; int minArgLength = ( argTypes == null ) ? 0 : argTypes . length ; next : for ( int f = methods . length ; ( -- f ) >= 0 ; ) { MethodBinding method = methods [ f ] ; if ( method . isSynthetic ( ) ) continue next ; if ( method . isDefaultAbstract ( ) ) continue next ; if ( method . isConstructor ( ) ) continue next ; if ( onlyStaticMethods && ( ! ( method . isStatic ( ) ) ) ) continue next ; if ( ( this . options . checkVisibility ) && ( ! ( method . canBeSeenBy ( receiverType , invocationSite , scope ) ) ) ) continue next ; if ( superCall && ( method . isAbstract ( ) ) ) { methodsFound . add ( new Object [ ] { method , receiverType } ) ; continue next ; } if ( exactMatch ) { if ( ! ( CharOperation . equals ( methodName , method . selector , false ) ) ) continue next ; } else { if ( methodLength > ( method . selector . length ) ) continue next ; if ( ! ( CharOperation . prefixEquals ( methodName , method . selector , false ) ) ) continue next ; } if ( minArgLength > ( method . parameters . length ) ) continue next ; for ( int a = minArgLength ; ( -- a ) >= 0 ; ) { if ( ( argTypes [ a ] ) != null ) { if ( ! ( argTypes [ a ] . isCompatibleWith ( method . parameters [ a ] ) ) ) { continue next ; } } } boolean prefixRequired = false ; for ( int i = methodsFound . size ; ( -- i ) >= 0 ; ) { Object [ ] other = ( ( Object [ ] ) ( methodsFound . elementAt ( i ) ) ) ; MethodBinding otherMethod = ( ( MethodBinding ) ( other [ 0 ] ) ) ; ReferenceBinding otherReceiverType = ( ( ReferenceBinding ) ( other [ 1 ] ) ) ; if ( ( method == otherMethod ) && ( receiverType == otherReceiverType ) ) continue next ; if ( ( CharOperation . equals ( method . selector , otherMethod . selector , true ) ) && ( method . areParametersEqual ( otherMethod ) ) ) { if ( method . declaringClass . isSuperclassOf ( otherMethod . declaringClass ) ) continue next ; if ( otherMethod . declaringClass . isInterface ( ) ) { if ( ( method . declaringClass ) == ( scope . getJavaLangObject ( ) ) ) continue next ; if ( method . declaringClass . isInterface ( ) ) continue next ; if ( ( ! superCall ) && ( method . declaringClass . implementsInterface ( otherMethod . declaringClass , true ) ) ) continue next ; } if ( method . declaringClass . isInterface ( ) ) if ( otherMethod . declaringClass . implementsInterface ( method . declaringClass , true ) ) continue next ; if ( receiverType . isAnonymousType ( ) ) continue next ; if ( ! superCall ) { prefixRequired = true ; } } } newMethodsFound . add ( new Object [ ] { method , receiverType } ) ; int length = method . parameters . length ; char [ ] [ ] parameterPackageNames = new char [ length ] [ ] ; char [ ] [ ] parameterTypeNames = new char [ length ] [ ] ; for ( int i = 0 ; i < length ; i ++ ) { <START_BUG> TypeBinding type = method . parameters [ i ] ; <END_BUG>

Fix:
TypeBinding type = method . original ( ) . parameters [ i ] ;