Buggy code:
public class Javadoc extends ASTNode { public JavadocSingleNameReference [ ] paramReferences ; public JavadocSingleTypeReference [ ] paramTypeParameters ; public TypeReference [ ] exceptionReferences ; public JavadocReturnStatement returnStatement ; public Expression [ ] seeReferences ; public long inheritedPositions = - 1 ; public JavadocSingleNameReference [ ] invalidParameters ; public Javadoc ( int sourceStart , int sourceEnd ) { } public StringBuffer print ( int indent , StringBuffer output ) { } public void resolve ( ClassScope scope ) { } public void resolve ( MethodScope methScope ) { AbstractMethodDeclaration methDecl = methScope . referenceMethod ( ) ; boolean overriding = ( ( methDecl == null ) || ( ( methDecl . binding ) == null ) ) ? false : ( ! ( methDecl . binding . isStatic ( ) ) ) && ( ( ( methDecl . binding . modifiers ) & ( ( ExtraCompilerModifiers . AccImplementing ) | ( ExtraCompilerModifiers . AccOverriding ) ) ) != 0 ) ; int seeTagsLength = ( ( this . seeReferences ) == null ) ? 0 : this . seeReferences . length ; boolean superRef = false ; for ( int i = 0 ; i < seeTagsLength ; i ++ ) { resolveReference ( this . seeReferences [ i ] , methScope ) ; try { if ( ( ( methDecl != null ) && ( ( methDecl . isConstructor ( ) ) || overriding ) ) && ( ! superRef ) ) { if ( ( this . seeReferences [ i ] ) instanceof JavadocMessageSend ) { JavadocMessageSend messageSend = ( ( JavadocMessageSend ) ( this . seeReferences [ i ] ) ) ; if ( ( ( messageSend . binding ) != null ) && ( messageSend . binding . isValidBinding ( ) ) ) { if ( ( ( methDecl . binding . declaringClass . isCompatibleWith ( messageSend . actualReceiverType ) ) && ( CharOperation . equals ( messageSend . selector , methDecl . selector ) ) ) && ( methDecl . binding . returnType . isCompatibleWith ( messageSend . binding . returnType ) ) ) { if ( ( ( messageSend . arguments ) == null ) && ( ( methDecl . arguments ) == null ) ) { superRef = true ; } else if ( ( ( messageSend . arguments ) != null ) && ( ( methDecl . arguments ) != null ) ) { superRef = methDecl . binding . areParametersCompatibleWith ( messageSend . binding . parameters ) ; } } } } else if ( ( this . seeReferences [ i ] ) instanceof JavadocAllocationExpression ) { JavadocAllocationExpression allocationExpr = ( ( JavadocAllocationExpression ) ( this . seeReferences [ 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 . areParametersCompatibleWith ( allocationExpr . binding . parameters ) ; } } } } } } catch ( Exception e ) { } } boolean reportMissing = ( methDecl == null ) || ( ! ( ( ( overriding && ( ( this . inheritedPositions ) != ( - 1 ) ) ) || superRef ) || ( ( ( methDecl . binding . declaringClass ) != null ) && ( methDecl . binding . declaringClass . isLocalType ( ) ) ) ) ) ; if ( ( ! overriding ) && ( ( this . inheritedPositions ) != ( - 1 ) ) ) { int start = ( ( int ) ( ( this . inheritedPositions ) > > > 32 ) ) ; int end = ( ( int ) ( this . inheritedPositions ) ) ; methScope . problemReporter ( ) . javadocUnexpectedTag ( start , end ) ; } resolveParamTags ( methScope , reportMissing ) ; resolveTypeParameterTags ( methScope , reportMissing ) ; if ( ( this . returnStatement ) == null ) { if ( reportMissing && ( methDecl != null ) ) { if ( methDecl . isMethod ( ) ) { MethodDeclaration meth = ( ( MethodDeclaration ) ( methDecl ) ) ; <START_BUG> if ( ( meth . binding . returnType ) != ( VoidBinding ) ) { <END_BUG> 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 resolveReference ( Expression reference , Scope scope ) { } private void resolveParamTags ( MethodScope methScope , boolean reportMissing ) { } private void resolveTypeParameterTags ( Scope scope , boolean reportMissing ) { } private void resolveThrowsTags ( MethodScope methScope , boolean reportMissing ) { } public ASTNode getNodeStartingAt ( int start ) { } }

Fix:
if ( ( meth . binding . returnType ) != ( TypeBinding . VOID ) ) {