Buggy code:
private ) { } private void findFields ( char [ ] fieldName , FieldBinding [ ] fields , Scope scope , ObjectVector fieldsFound , ObjectVector localsFound , boolean onlyStaticFields , ReferenceBinding receiverType , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall , boolean canBePrefixed ) { } private void findFields ( char [ ] fieldName , ReferenceBinding receiverType , Scope scope , ObjectVector fieldsFound , ObjectVector localsFound , boolean onlyStaticFields , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall , boolean canBePrefixed ) { } private void findFieldsAndMethods ( char [ ] token , TypeBinding receiverType , Scope scope , InvocationSite invocationSite , Scope invocationScope , boolean implicitCall , boolean superCall ) { } private void findImports ( CompletionOnImportReference importReference , boolean findMembers ) { } private void findImportsOfMemberTypes ( char [ ] typeName , ReferenceBinding ref , boolean onlyStatic ) { } private void findImportsOfStaticFields ( char [ ] fieldName , ReferenceBinding ref ) { } private void findImportsOfStaticMethdods ( char [ ] methodName , ReferenceBinding ref ) { } private void findJavadocBlockTags ( CompletionOnJavadocTag javadocTag ) { } private void findJavadocInlineTags ( CompletionOnJavadocTag javadocTag ) { } private void findKeywords ( char [ ] keyword , char [ ] [ ] choices , boolean canCompleteEmptyToken ) { } private void findTrueOrFalseKeywords ( char [ ] [ ] choices ) { } private void findKeywordsForMember ( char [ ] token , int modifiers ) { } private void findMemberTypes ( char [ ] typeName , ReferenceBinding [ ] memberTypes , ObjectVector typesFound , ReferenceBinding receiverType , SourceTypeBinding invocationType , boolean staticOnly , boolean fromStaticImport , boolean checkQualification ) { } private void findMemberTypes ( char [ ] typeName , ReferenceBinding receiverType , Scope scope , SourceTypeBinding typeInvocation , boolean staticOnly , ObjectVector typesFound ) { } private void findMemberTypes ( char [ ] typeName , ReferenceBinding receiverType , Scope scope , SourceTypeBinding typeInvocation , boolean staticOnly , boolean fromStaticImport , boolean checkQualification , boolean proposeAllMemberTypes , SourceTypeBinding typeToIgnore , ObjectVector typesFound ) { } private void findJavadocParamNames ( char [ ] token , char [ ] [ ] missingParams , boolean isTypeParam ) { } private void findSubMemberTypes ( char [ ] typeName , ReferenceBinding receiverType , Scope scope , SourceTypeBinding typeInvocation , boolean staticOnly , boolean fromStaticImport , ObjectVector typesFound ) { } private void findInterfacesMethods ( 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 , boolean canBePrefixed ) { } 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 , boolean canBePrefixed ) { } private void findLocalMethodsOfStaticImports ( char [ ] methodName , MethodBinding [ ] methods , Scope scope , ReferenceBinding receiverType , InvocationSite invocationSite ) { } int computeRelevanceForCaseMatching ( char [ ] token , char [ ] proposalName ) { } private int computeRelevanceForAnnotation ( ) { } private int computeRelevanceForClass ( ) { } private int computeRelevanceForEnum ( ) { } private int computeRelevanceForInterface ( ) { } private int computeRelevanceForQualification ( boolean prefixRequired ) { } int computeRelevanceForRestrictions ( int accessRuleKind ) { } private int computeRelevanceForStatic ( boolean onlyStatic , boolean isStatic ) { } private int computeRelevanceForException ( char [ ] proposalName ) { } private int computeRelevanceForExpectingType ( TypeBinding proposalType ) { } private int computeRelevanceForExpectingType ( char [ ] packageName , char [ ] typeName ) { } int computeRelevanceForInterestingProposal ( ) { } private int computeRelevanceForInterestingProposal ( Binding binding ) { } private void computeUninterestingBindings ( ASTNode parent , Scope scope ) { } private void findLocalMethodDeclarations ( char [ ] methodName , MethodBinding [ ] methods , Scope scope , ObjectVector methodsFound , boolean exactMatch , ReferenceBinding receiverType ) { } private void createTypeVariable ( TypeVariableBinding typeVariable , StringBuffer completion ) { } private void createType ( TypeBinding type , StringBuffer completion ) { } private void createMethod ( MethodBinding method , char [ ] [ ] parameterPackageNames , char [ ] [ ] parameterTypeNames , char [ ] [ ] parameterNames , StringBuffer completion ) { } 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 , boolean superCall , boolean canBePrefixed ) { boolean notInJavadoc = ( this . assistNodeInJavadoc ) == 0 ; if ( ( selector == null ) && notInJavadoc ) { return ; } if ( isCompletingDeclaration ) { MethodBinding [ ] methods = receiverType . availableMethods ( ) ; if ( methods != null ) { for ( int i = 0 ; i < ( methods . length ) ; i ++ ) { if ( ! ( methods [ i ] . isDefaultAbstract ( ) ) ) { methodsFound . add ( methods [ i ] ) ; } } } } ReferenceBinding currentType = receiverType ; if ( notInJavadoc ) { if ( receiverType . isInterface ( ) ) { if ( isCompletingDeclaration ) { findInterfacesMethods ( selector , argTypes , receiverType , currentType . superInterfaces ( ) , scope , methodsFound , onlyStaticMethods , exactMatch , isCompletingDeclaration , invocationSite , invocationScope , implicitCall , superCall , canBePrefixed ) ; } else { findInterfacesMethods ( selector , argTypes , receiverType , new ReferenceBinding [ ] { currentType } , scope , methodsFound , onlyStaticMethods , exactMatch , isCompletingDeclaration , invocationSite , invocationScope , implicitCall , superCall , canBePrefixed ) ; } currentType = scope . getJavaLangObject ( ) ; } else { if ( isCompletingDeclaration ) { findInterfacesMethods ( selector , argTypes , receiverType , currentType . superInterfaces ( ) , scope , methodsFound , onlyStaticMethods , exactMatch , isCompletingDeclaration , invocationSite , invocationScope , implicitCall , superCall , canBePrefixed ) ; currentType = receiverType . superclass ( ) ; } } } boolean hasPotentialDefaultAbstractMethods = true ; while ( currentType != null ) { MethodBinding [ ] methods = currentType . availableMethods ( ) ; if ( methods != null ) { if ( isCompletingDeclaration ) { findLocalMethodDeclarations ( selector , methods , scope , methodsFound , exactMatch , receiverType ) ; } else { findLocalMethods ( selector , argTypes , methods , scope , methodsFound , onlyStaticMethods , exactMatch , receiverType , invocationSite , invocationScope , implicitCall , superCall , canBePrefixed ) ; } } <START_BUG> if ( ( notInJavadoc && hasPotentialDefaultAbstractMethods ) && ( currentType . isAbstract ( ) ) ) { <END_BUG>

Fix:
if ( ( notInJavadoc && hasPotentialDefaultAbstractMethods ) && ( ( currentType . isAbstract ( ) ) || ( currentType . isTypeVariable ( ) ) ) ) {