Buggy code:
public class JavadocMessageSend extends MessageSend { public int tagSourceStart ; public int tagSourceEnd ; public int tagValue ; public boolean superAccess = false ; public JavadocMessageSend ( char [ ] name , long pos ) { } public JavadocMessageSend ( char [ ] name , long pos , JavadocArgumentExpression [ ] arguments ) { } private TypeBinding internalResolveType ( Scope scope ) { this . constant = NotAConstant ; if ( ( this . receiver ) == null ) { this . actualReceiverType = scope . enclosingSourceType ( ) ; } else if ( ( scope . kind ) == ( Scope . CLASS_SCOPE ) ) { this . actualReceiverType = this . receiver . resolveType ( ( ( ClassScope ) ( scope ) ) ) ; } else { this . actualReceiverType = this . receiver . resolveType ( ( ( BlockScope ) ( scope ) ) ) ; } TypeBinding [ ] argumentTypes = NoParameters ; boolean hasArgsTypeVar = false ; if ( ( this . arguments ) != null ) { boolean argHasError = false ; int length = this . arguments . length ; argumentTypes = new TypeBinding [ length ] ; for ( int i = 0 ; i < length ; i ++ ) { Expression argument = this . arguments [ i ] ; if ( ( scope . kind ) == ( Scope . CLASS_SCOPE ) ) { argumentTypes [ i ] = argument . resolveType ( ( ( ClassScope ) ( scope ) ) ) ; } else { argumentTypes [ i ] = argument . resolveType ( ( ( BlockScope ) ( scope ) ) ) ; } if ( ( argumentTypes [ i ] ) == null ) { argHasError = true ; } else if ( ! hasArgsTypeVar ) { hasArgsTypeVar = argumentTypes [ i ] . isTypeVariable ( ) ; } } if ( argHasError ) { return null ; } } if ( ( this . actualReceiverType ) == null ) { return null ; } <START_BUG> this . actualReceiverType = scope . convertToRawType ( this . receiver . resolvedType ) ; <END_BUG> SourceTypeBinding enclosingType = scope . enclosingSourceType ( ) ; this . superAccess = ( enclosingType == null ) ? false : enclosingType . isCompatibleWith ( this . actualReceiverType ) ; if ( this . actualReceiverType . isBaseType ( ) ) { scope . problemReporter ( ) . javadocErrorNoMethodFor ( this , this . actualReceiverType , argumentTypes , scope . getDeclarationModifiers ( ) ) ; return null ; } this . binding = scope . getMethod ( this . actualReceiverType , this . selector , argumentTypes , this ) ; if ( ! ( this . binding . isValidBinding ( ) ) ) { TypeBinding enclosingTypeBinding = this . actualReceiverType ; MethodBinding methodBinding = this . binding ; while ( ( ! ( methodBinding . isValidBinding ( ) ) ) && ( ( enclosingTypeBinding . isMemberType ( ) ) || ( enclosingTypeBinding . isLocalType ( ) ) ) ) { enclosingTypeBinding = enclosingTypeBinding . enclosingType ( ) ; methodBinding = scope . getMethod ( enclosingTypeBinding , this . selector , argumentTypes , this ) ; } if ( methodBinding . isValidBinding ( ) ) { this . binding = methodBinding ; } else { enclosingTypeBinding = this . actualReceiverType ; MethodBinding contructorBinding = this . binding ; while ( ( ! ( contructorBinding . isValidBinding ( ) ) ) && ( ( enclosingTypeBinding . isMemberType ( ) ) || ( enclosingTypeBinding . isLocalType ( ) ) ) ) { enclosingTypeBinding = enclosingTypeBinding . enclosingType ( ) ; if ( CharOperation . equals ( this . selector , enclosingTypeBinding . shortReadableName ( ) ) ) { contructorBinding = scope . getConstructor ( ( ( ReferenceBinding ) ( enclosingTypeBinding ) ) , argumentTypes , this ) ; } } if ( contructorBinding . isValidBinding ( ) ) { this . binding = contructorBinding ; } } } if ( ! ( this . binding . isValidBinding ( ) ) ) { switch ( this . binding . problemId ( ) ) { case ProblemReasons . NonStaticReferenceInConstructorInvocation : case ProblemReasons . NonStaticReferenceInStaticContext : case ProblemReasons . InheritedNameHidesEnclosingName : MethodBinding closestMatch = ( ( ProblemMethodBinding ) ( this . binding ) ) . closestMatch ; if ( closestMatch != null ) { this . binding = closestMatch ; } } } if ( ! ( this . binding . isValidBinding ( ) ) ) { if ( ( this . binding . declaringClass ) == null ) { if ( ( this . actualReceiverType ) instanceof ReferenceBinding ) { this . binding . declaringClass = ( ( ReferenceBinding ) ( this . actualReceiverType ) ) ; } else { scope . problemReporter ( ) . javadocErrorNoMethodFor ( this , this . actualReceiverType , argumentTypes , scope . getDeclarationModifiers ( ) ) ; return null ; } } scope . problemReporter ( ) . javadocInvalidMethod ( this , this . binding , scope . getDeclarationModifiers ( ) ) ; if ( ( this . binding ) instanceof ProblemMethodBinding ) { MethodBinding closestMatch = ( ( ProblemMethodBinding ) ( this . binding ) ) . closestMatch ; if ( closestMatch != null ) this . binding = closestMatch ; } return this . resolvedType = ( ( this . binding ) == null ) ? null : this . binding . returnType ; } else if ( hasArgsTypeVar ) { MethodBinding problem = new ProblemMethodBinding ( this . binding , this . selector , argumentTypes , ProblemReasons . NotFound ) ; scope . problemReporter ( ) . javadocInvalidMethod ( this , problem , scope . getDeclarationModifiers ( ) ) ; } else if ( binding . isVarargs ( ) ) { int length = argumentTypes . length ;

Fix:
this . actualReceiverType = scope . environment ( ) . convertToRawType ( this . receiver . resolvedType ) ;