Buggy code:
public class Javadoc extends ASTNode { public JavadocSingleNameReference [ ] parameters ; public TypeReference [ ] thrownExceptions ; public JavadocReturnStatement returnStatement ; public Expression [ ] references ; public boolean inherited = false ; public JavadocSingleNameReference [ ] invalidParameters ; public Javadoc ( int sourceStart , int sourceEnd ) { } public StringBuffer print ( int indent , StringBuffer output ) { } public void resolve ( ClassScope classScope ) { } public void resolve ( MethodScope methScope ) { AbstractMethodDeclaration methDecl = methScope . referenceMethod ( ) ; boolean overriding = ( methDecl == null ) ? false : ( ( methDecl . binding . modifiers ) & ( ( AccImplementing ) + ( AccOverriding ) ) ) != 0 ; int seeTagsLength = ( ( this . references ) == null ) ? 0 : this . references . length ; boolean superRef = false ; for ( int i = 0 ; i < seeTagsLength ; i ++ ) { this . references [ i ] . resolveType ( methScope ) ; if ( ( this . references [ i ] ) instanceof JavadocFieldReference ) { JavadocFieldReference fieldRef = ( ( JavadocFieldReference ) ( this . references [ i ] ) ) ; if ( ( ( fieldRef . receiverType ) != null ) && ( ( fieldRef . binding ) == null ) ) { JavadocMessageSend msgSend = new JavadocMessageSend ( fieldRef . token , fieldRef . nameSourcePosition ) ; msgSend . receiver = fieldRef . receiver ; msgSend . receiverType = fieldRef . receiverType ; msgSend . qualifyingType = fieldRef . receiverType ; msgSend . superAccess = methScope . enclosingSourceType ( ) . isCompatibleWith ( msgSend . receiverType ) ; msgSend . binding = methScope . findMethod ( ( ( ReferenceBinding ) ( msgSend . receiverType ) ) , msgSend . selector , new TypeBinding [ 0 ] , msgSend ) ; this . references [ i ] = msgSend ; } } try { if ( ( ( methDecl != null ) && ( ( methDecl . isConstructor ( ) ) || overriding ) ) && ( ! superRef ) ) { if ( ( this . references [ i ] ) instanceof JavadocMessageSend ) { JavadocMessageSend messageSend = ( ( JavadocMessageSend ) ( this . references [ i ] ) ) ; if ( ( ( messageSend . binding ) != null ) && ( messageSend . binding . isValidBinding ( ) ) ) { if ( ( ( methDecl . binding . declaringClass . isCompatibleWith ( messageSend . receiverType ) ) && ( CharOperation . equals ( messageSend . selector , methDecl . selector ) ) ) && ( ( messageSend . binding . returnType ) == ( methDecl . binding . returnType ) ) ) { if ( ( ( messageSend . arguments ) == null ) && ( ( methDecl . arguments ) == null ) ) { superRef = true ; } else if ( ( ( messageSend . arguments ) != null ) && ( ( methDecl . arguments ) != null ) ) { superRef = methDecl . binding . areParametersEqual ( messageSend . binding ) ; } } } } else if ( ( this . references [ i ] ) instanceof JavadocAllocationExpression ) { JavadocAllocationExpression allocationExpr = ( ( JavadocAllocationExpression ) ( this . references [ i ] ) ) ; if ( ( ( allocationExpr . binding ) != null ) && ( allocationExpr . binding . isValidBinding ( ) ) ) { if ( methDecl . binding . declaringClass . isCompatibleWith ( allocationExpr . resolvedType ) ) { if ( ( ( allocationExpr . arguments ) == null ) && ( ( methDecl . arguments ) == null ) ) { superRef = true ; } else if ( ( ( allocationExpr . arguments ) != null ) && ( ( methDecl . arguments ) != null ) ) { superRef = methDecl . binding . areParametersEqual ( allocationExpr . binding ) ; } } } } } } catch ( Exception e ) { } } boolean reportMissing = ( methDecl == null ) || ( ! ( ( ( overriding && ( this . inherited ) ) || superRef ) || ( ( ( methDecl . binding . declaringClass ) != null ) && ( methDecl . binding . declaringClass . isLocalType ( ) ) ) ) ) ; resolveParamTags ( methScope , reportMissing ) ; if ( ( this . returnStatement ) == null ) { if ( reportMissing && ( methDecl != null ) ) { <START_BUG> if ( ( ! ( methDecl . isConstructor ( ) ) ) && ( ! ( methDecl . isClinit ( ) ) ) ) { <END_BUG> MethodDeclaration meth = ( ( MethodDeclaration ) ( methDecl ) ) ; if ( ( meth . binding . returnType ) != ( VoidBinding ) ) { methScope . problemReporter ( ) . javadocMissingReturnTag ( meth . returnType . sourceStart , meth . returnType . sourceEnd , methDecl . binding . modifiers ) ; } } } } else { this . returnStatement . resolve ( methScope ) ; } resolveThrowsTags ( methScope , reportMissing ) ; int length = ( ( this . invalidParameters ) == null ) ? 0 : this . invalidParameters . length ; for ( int i = 0 ; i < length ; i ++ ) { this . invalidParameters [ i ] . resolve ( methScope , false ) ; } } private void resolveParamTags ( MethodScope methScope , boolean reportMissing ) { } private void resolveThrowsTags ( MethodScope methScope , boolean reportMissing ) { } public ASTNode getNodeStartingAt ( int start ) { } }

Fix:
if ( methDecl . isMethod ( ) ) {