Buggy code:
protected void buildBodyDeclarations ( TypeDeclaration expression , AnonymousClassDeclaration anonymousClassDeclaration ) { } void buildCommentsTable ( CompilationUnit compilationUnit , int [ ] [ ] comments ) { } protected void checkAndAddMultipleFieldDeclaration ( FieldDeclaration [ ] fields , int index , List bodyDeclarations ) { } protected void checkAndAddMultipleLocalDeclaration ( Statement [ ] stmts , int index , List blockStatements ) { } protected void checkCanceled ( ) { } protected void completeRecord ( ArrayType arrayType , ASTNode astNode ) { } public ASTNode convert ( AbstractMethodDeclaration methodDeclaration ) { } public ClassInstanceCreation convert ( AllocationExpression expression ) { } public Expression convert ( AND_AND_Expression expression ) { } public AnnotationTypeDeclaration convertToAnnotationDeclaration ( TypeDeclaration typeDeclaration ) { } public ASTNode convert ( AnnotationMethodDeclaration annotationTypeMemberDeclaration ) { } public SingleVariableDeclaration convert ( Argument argument ) { } public Annotation convert ( org . eclipse . jdt . internal . compiler . ast . Annotation annotation ) { } public ArrayCreation convert ( ArrayAllocationExpression expression ) { } public ArrayInitializer convert ( org . eclipse . jdt . internal . compiler . ast . ArrayInitializer expression ) { } public ArrayAccess convert ( ArrayReference reference ) { } public AssertStatement convert ( org . eclipse . jdt . internal . compiler . ast . AssertStatement statement ) { } public Assignment convert ( org . eclipse . jdt . internal . compiler . ast . Assignment expression ) { } public TypeDeclaration convert ( ASTNode [ ] nodes ) { } public Expression convert ( BinaryExpression expression ) { } public Block convert ( org . eclipse . jdt . internal . compiler . ast . Block statement ) { } public BreakStatement convert ( org . eclipse . jdt . internal . compiler . ast . BreakStatement statement ) { } public SwitchCase convert ( CaseStatement statement ) { } public CastExpression convert ( org . eclipse . jdt . internal . compiler . ast . CastExpression expression ) { } public CharacterLiteral convert ( CharLiteral expression ) { } public Expression convert ( ClassLiteralAccess expression ) { } public CompilationUnit convert ( CompilationUnitDeclaration unit , char [ ] source ) { } public Assignment convert ( CompoundAssignment expression ) { } public ConditionalExpression convert ( org . eclipse . jdt . internal . compiler . ast . ConditionalExpression expression ) { } public ContinueStatement convert ( org . eclipse . jdt . internal . compiler . ast . ContinueStatement statement ) { } public DoStatement convert ( org . eclipse . jdt . internal . compiler . ast . DoStatement statement ) { } public NumberLiteral convert ( DoubleLiteral expression ) { } public EmptyStatement convert ( org . eclipse . jdt . internal . compiler . ast . EmptyStatement statement ) { } public EnumConstantDeclaration convert ( FieldDeclaration enumConstant ) { } public Expression convert ( EqualExpression expression ) { } public Statement convert ( ExplicitConstructorCall statement ) { } public Expression convert ( Expression expression ) { } public StringLiteral convert ( ExtendedStringLiteral expression ) { } public BooleanLiteral convert ( FalseLiteral expression ) { } public Expression convert ( FieldReference reference ) { } public NumberLiteral convert ( FloatLiteral expression ) { } public Statement convert ( ForeachStatement statement ) { } public ForStatement convert ( org . eclipse . jdt . internal . compiler . ast . ForStatement statement ) { } public IfStatement convert ( org . eclipse . jdt . internal . compiler . ast . IfStatement statement ) { } public InstanceofExpression convert ( InstanceOfExpression expression ) { } public NumberLiteral convert ( IntLiteral expression ) { } public NumberLiteral convert ( IntLiteralMinValue expression ) { } public void convert ( Javadoc javadoc , BodyDeclaration bodyDeclaration ) { } public void convert ( Javadoc javadoc , PackageDeclaration packageDeclaration ) { <START_BUG> if ( ( ( ast . apiLevel ) == ( AST . JLS3 ) ) && ( ( packageDeclaration . getJavadoc ( ) ) == null ) ) { <END_BUG> if ( javadoc != null ) { if ( ( ( this . commentMapper ) == null ) || ( ! ( this . commentMapper . hasSameTable ( this . commentsTable ) ) ) ) { this . commentMapper = new DefaultCommentMapper ( this . commentsTable ) ; } Comment comment = this . commentMapper . getComment ( javadoc . sourceStart ) ; if ( ( ( comment != null ) && ( comment . isDocComment ( ) ) ) && ( ( comment . getParent ( ) ) == null ) ) { Javadoc docComment = ( ( Javadoc ) ( comment ) ) ; if ( this . resolveBindings ) { recordNodes ( docComment , javadoc ) ; Iterator tags = docComment . tags ( ) . listIterator ( ) ; while ( tags . hasNext ( ) ) { recordNodes ( javadoc , ( ( TagElement ) ( tags . next ( ) ) ) ) ; } } packageDeclaration . setJavadoc ( docComment ) ; } } } } public LabeledStatement convert ( org . eclipse . jdt . internal . compiler . ast . LabeledStatement statement ) { } public NumberLiteral convert ( LongLiteral expression ) { } public NumberLiteral convert ( LongLiteralMinValue expression ) { } public Expression convert ( MessageSend expression ) { } public MarkerAnnotation convert ( org . eclipse . jdt . internal . compiler . ast . MarkerAnnotation annotation ) { } public MemberValuePair convert ( org . eclipse . jdt . internal . compiler . ast . MemberValuePair memberValuePair ) { } public Name convert ( NameReference reference ) { } public InfixExpression convert ( StringLiteralConcatenation expression ) { } public NormalAnnotation convert ( org . eclipse . jdt . internal . compiler . ast . NormalAnnotation annotation ) { } public NullLiteral convert ( org . eclipse . jdt . internal . compiler . ast . NullLiteral expression ) { }

Fix:
if ( ( ( this . ast . apiLevel ) == ( AST . JLS3 ) ) && ( ( packageDeclaration . getJavadoc ( ) ) == null ) ) {