Buggy code:
public class ParameterizedTypeBinding extends ReferenceBinding implements Substitution { public ReferenceBinding type ; public TypeBinding [ ] arguments ; public LookupEnvironment environment ; public char [ ] genericTypeSignature ; public ReferenceBinding superclass ; public ReferenceBinding [ ] superInterfaces ; public FieldBinding [ ] fields ; public ReferenceBinding [ ] memberTypes ; public MethodBinding [ ] methods ; private ReferenceBinding enclosingType ; public ParameterizedTypeBinding ( ReferenceBinding type , TypeBinding [ ] arguments , ReferenceBinding enclosingType , LookupEnvironment environment ) { } public void boundCheck ( Scope scope , TypeReference [ ] argumentReferences ) { } public boolean canBeInstantiated ( ) { } public int kind ( ) { } public TypeBinding capture ( Scope scope , int position ) { if ( ( ( this . tagBits ) & ( TagBits . HasDirectWildcard ) ) == 0 ) return this ; TypeBinding [ ] originalArguments = arguments ; int length = originalArguments . length ; TypeBinding [ ] capturedArguments = new TypeBinding [ length ] ; ReferenceBinding contextType = scope . enclosingSourceType ( ) ; if ( contextType != null ) contextType = contextType . outermostEnclosingType ( ) ; for ( int i = 0 ; i < length ; i ++ ) { TypeBinding argument = originalArguments [ i ] ; if ( ( ( argument . kind ( ) ) == ( Binding . WILDCARD_TYPE ) ) && ( ( ( ( WildcardBinding ) ( argument ) ) . otherBounds ) == null ) ) { <START_BUG> capturedArguments [ i ] = new CaptureBinding ( ( ( WildcardBinding ) ( argument ) ) , contextType , position ) ; <END_BUG> } else { capturedArguments [ i ] = argument ; } } ParameterizedTypeBinding capturedParameterizedType = this . environment . createParameterizedType ( this . type , capturedArguments , enclosingType ( ) ) ; for ( int i = 0 ; i < length ; i ++ ) { TypeBinding argument = capturedArguments [ i ] ; if ( argument . isCapture ( ) ) { ( ( CaptureBinding ) ( argument ) ) . initializeBounds ( scope , capturedParameterizedType ) ; } } return capturedParameterizedType ; } public void collectSubstitutes ( Scope scope , TypeBinding actualType , InferenceContext inferenceContext , int constraint ) { } public void computeId ( ) { } public char [ ] computeUniqueKey ( boolean isLeaf ) { } public char [ ] constantPoolName ( ) { } public ParameterizedMethodBinding createParameterizedMethod ( MethodBinding originalMethod ) { } public String debugName ( ) { } public ReferenceBinding enclosingType ( ) { } public LookupEnvironment environment ( ) { } public TypeBinding erasure ( ) { } public int fieldCount ( ) { } public FieldBinding [ ] fields ( ) { } public char [ ] genericTypeSignature ( ) { } public long getAnnotationTagBits ( ) { } public MethodBinding getExactConstructor ( TypeBinding [ ] argumentTypes ) { } public MethodBinding getExactMethod ( char [ ] selector , TypeBinding [ ] argumentTypes , CompilationUnitScope refScope ) { } public FieldBinding getField ( char [ ] fieldName , boolean needResolve ) { } public ReferenceBinding getMemberType ( char [ ] typeName ) { } public MethodBinding [ ] getMethods ( char [ ] selector ) { } public boolean hasMemberTypes ( ) { } public boolean implementsMethod ( MethodBinding method ) { } void initialize ( ReferenceBinding someType , TypeBinding [ ] someArguments ) { } protected void initializeArguments ( ) { } public boolean isEquivalentTo ( TypeBinding otherType ) { } public boolean isIntersectingWith ( TypeBinding otherType ) { } public boolean isParameterizedType ( ) { } public boolean isRawSubstitution ( ) { } public ReferenceBinding [ ] memberTypes ( ) { } public MethodBinding [ ] methods ( ) { } public char [ ] qualifiedSourceName ( ) { } public char [ ] readableName ( ) { } ReferenceBinding resolve ( ) { } public char [ ] shortReadableName ( ) { } public char [ ] signature ( ) { } public char [ ] sourceName ( ) { } public TypeBinding substitute ( TypeVariableBinding originalVariable ) { } public ReferenceBinding superclass ( ) { } public ReferenceBinding [ ] superInterfaces ( ) { } public void swapUnresolved ( UnresolvedReferenceBinding unresolvedType , ReferenceBinding resolvedType , LookupEnvironment env ) { } public ReferenceBinding [ ] syntheticEnclosingInstanceTypes ( ) { } public SyntheticArgumentBinding [ ] syntheticOuterLocalVariables ( ) { } public char [ ] qualifiedPackageName ( ) { } public String toString ( ) { } public TypeVariableBinding [ ] typeVariables ( ) { } }

Fix:
capturedArguments [ i ] = new CaptureBinding ( ( ( WildcardBinding ) ( argument ) ) , contextType , position , scope . compilationUnitScope ( ) . nextCaptureID ( ) ) ;