Buggy code:
public class SourceElementParser extends CommentRecorderParser { ISourceElementRequestor requestor ; int fieldCount ; ISourceType sourceType ; boolean reportReferenceInfo ; char [ ] [ ] typeNames ; char [ ] [ ] superTypeNames ; int nestedTypeIndex ; NameReference [ ] unknownRefs ; int unknownRefsCounter ; SourceElementParser . LocalDeclarationVisitor localDeclarationVisitor = null ; CompilerOptions options ; public class LocalDeclarationVisitor extends ASTVisitor { ArrayList declaringTypes ; public void pushDeclaringType ( TypeDeclaration declaringType ) { } public void popDeclaringType ( ) { } public TypeDeclaration peekDeclaringType ( ) { } public boolean visit ( TypeDeclaration typeDeclaration , BlockScope scope ) { } public boolean visit ( TypeDeclaration typeDeclaration , ClassScope scope ) { } } public SourceElementParser ( final ISourceElementRequestor requestor , IProblemFactory problemFactory , CompilerOptions options ) { } public SourceElementParser ( final ISourceElementRequestor requestor , IProblemFactory problemFactory , CompilerOptions options , boolean reportLocalDeclarations ) { } public void checkComment ( ) { } private void acceptJavadocTypeReference ( Expression expression ) { } protected void classInstanceCreation ( boolean alwaysQualified ) { } protected void consumeConstructorHeaderName ( ) { } protected void consumeConstructorHeaderNameWithTypeParameters ( ) { } protected void consumeEnumConstantWithClassBody ( ) { } protected void consumeEnumConstantNoClassBody ( ) { } protected void consumeExitVariableWithInitialization ( ) { } protected void consumeExitVariableWithoutInitialization ( ) { } protected void consumeFieldAccess ( boolean isSuperAccess ) { } protected void consumeMethodHeaderName ( ) { } protected void consumeMethodHeaderNameWithTypeParameters ( ) { } protected void consumeMethodInvocationName ( ) { } protected void consumeMethodInvocationNameWithTypeArguments ( ) { } protected void consumeMethodInvocationPrimary ( ) { } protected void consumeMethodInvocationPrimaryWithTypeArguments ( ) { } protected void consumeMethodInvocationSuper ( ) { } protected void consumeMethodInvocationSuperWithTypeArguments ( ) { } protected void consumeSingleStaticImportDeclarationName ( ) { } protected void consumeSingleTypeImportDeclarationName ( ) { } protected void consumeStaticImportOnDemandDeclarationName ( ) { } protected void consumeTypeImportOnDemandDeclarationName ( ) { } public MethodDeclaration convertToMethodDeclaration ( ConstructorDeclaration c , CompilationResult compilationResult ) { } protected FieldDeclaration createFieldDeclaration ( char [ ] fieldName , int sourceStart , int sourceEnd ) { } protected CompilationUnitDeclaration endParse ( int act ) { } public TypeReference getTypeReference ( int dim ) { } public NameReference getUnspecifiedReference ( ) { } public NameReference getUnspecifiedReferenceOptimized ( ) { } public void notifySourceElementRequestor ( CompilationUnitDeclaration parsedUnit ) { } private void notifyAllUnknownReferences ( ) { } public void notifySourceElementRequestor ( AbstractMethodDeclaration methodDeclaration ) { } private ISourceElementRequestor . TypeParameterInfo [ ] getTypeParameterInfos ( TypeParameter [ ] typeParameters ) { if ( typeParameters == null ) return null ; int typeParametersLength = typeParameters . length ; ISourceElementRequestor . TypeParameterInfo [ ] result = new ISourceElementRequestor . TypeParameterInfo [ typeParametersLength ] ; for ( int i = 0 ; i < typeParametersLength ; i ++ ) { TypeParameter typeParameter = typeParameters [ i ] ; TypeReference firstBound = typeParameter . type ; TypeReference [ ] otherBounds = typeParameter . bounds ; char [ ] [ ] typeParameterBounds = null ; if ( firstBound != null ) { if ( otherBounds != null ) { int otherBoundsLength = otherBounds . length ; char [ ] [ ] boundNames = new char [ otherBoundsLength + 1 ] [ ] ; boundNames [ 0 ] = CharOperation . concatWith ( firstBound . getParameterizedTypeName ( ) , '.' ) ; for ( int j = 0 ; j < otherBoundsLength ; j ++ ) { boundNames [ ( j + 1 ) ] = CharOperation . concatWith ( otherBounds [ j ] . getParameterizedTypeName ( ) , '.' ) ; } typeParameterBounds = boundNames ; } else { typeParameterBounds = new char [ ] [ ] { CharOperation . concatWith ( firstBound . getParameterizedTypeName ( ) , '.' ) } ; } } ISourceElementRequestor . TypeParameterInfo typeParameterInfo = new ISourceElementRequestor . TypeParameterInfo ( ) ; typeParameterInfo . declarationStart = typeParameter . declarationSourceStart ; typeParameterInfo . declarationEnd = typeParameter . declarationSourceEnd ; typeParameterInfo . name = typeParameter . name ; typeParameterInfo . nameSourceStart = typeParameter . sourceStart ; typeParameterInfo . nameSourceEnd = typeParameter . sourceEnd ; <START_BUG> typeParameterInfo . typeParameterBounds = typeParameterBounds ; <END_BUG> result [ i ] = typeParameterInfo ; } return result ; } public void notifySourceElementRequestor ( FieldDeclaration fieldDeclaration , TypeDeclaration declaringType ) { } public void notifySourceElementRequestor ( ImportReference importReference , boolean isPackage ) { } public void notifySourceElementRequestor ( TypeDeclaration typeDeclaration , boolean notifyTypePresence , TypeDeclaration declaringType ) { } private int sourceEnd ( TypeDeclaration typeDeclaration ) { } public void parseCompilationUnit ( ICompilationUnit unit , int start , int end , boolean fullParse ) { } public CompilationUnitDeclaration parseCompilationUnit ( ICompilationUnit unit , boolean fullParse ) { } public void parseTypeMemberDeclarations ( ISourceType type , ICompilationUnit sourceUnit , int start , int end , boolean needReferenceInfo ) { } public void parseTypeMemberDeclarations ( char [ ] contents , int start , int end ) { } private static void quickSort ( ASTNode [ ] sortedCollection , int left , int right ) { } public void addUnknownRef ( NameReference nameRef ) { } private void visitIfNeeded ( AbstractMethodDeclaration method ) { } private void visitIfNeeded ( FieldDeclaration field , TypeDeclaration declaringType ) { } private void visitIfNeeded ( Initializer initializer ) { } }

Fix:
typeParameterInfo . bounds = typeParameterBounds ;