Buggy code:
public class WildTypePattern extends TypePattern { private static final String GENERIC_WILDCARD_CHARACTER = "?" ; private NamePattern [ ] namePatterns ; int ellipsisCount ; String [ ] importedPrefixes ; String [ ] knownMatches ; int dim ; TypePattern upperBound ; TypePattern [ ] additionalInterfaceBounds ; TypePattern lowerBound ; private boolean isGeneric = true ; WildTypePattern ( NamePattern [ ] namePatterns , boolean includeSubtypes , int dim , boolean isVarArgs , TypePatternList typeParams ) { } public WildTypePattern ( List names , boolean includeSubtypes , int dim ) { } public WildTypePattern ( List names , boolean includeSubtypes , int dim , int endPos ) { } public WildTypePattern ( List names , boolean includeSubtypes , int dim , int endPos , boolean isVarArg ) { } public WildTypePattern ( List names , boolean includeSubtypes , int dim , int endPos , boolean isVarArg , TypePatternList typeParams , TypePattern upperBound , TypePattern [ ] additionalInterfaceBounds , TypePattern lowerBound ) { } public WildTypePattern ( List names , boolean includeSubtypes , int dim , int endPos , boolean isVarArg , TypePatternList typeParams ) { } public NamePattern [ ] getNamePatterns ( ) { } public TypePattern getUpperBound ( ) { } public TypePattern getLowerBound ( ) { } public TypePattern [ ] getAdditionalIntefaceBounds ( ) { } public void setIsVarArgs ( boolean isVarArgs ) { } protected boolean couldEverMatchSameTypesAs ( TypePattern other ) { } public static char [ ] [ ] splitNames ( String s ) { } protected boolean matchesExactly ( ResolvedType type ) { } protected boolean matchesExactly ( ResolvedType type , ResolvedType annotatedType ) { } private boolean matchesParameters ( ResolvedType aType , MatchKind staticOrDynamic ) { } private boolean matchesBounds ( ResolvedType aType , MatchKind staticOrDynamic ) { } public int getDimensions ( ) { } public boolean isArray ( ) { } private boolean matchesExactlyByName ( String targetTypeName ) { } private int lastIndexOfDotOrDollar ( String string ) { } private boolean innerMatchesExactly ( String targetTypeName ) { } private boolean innerMatchesExactly ( char [ ] [ ] names ) { } private static boolean outOfStar ( final NamePattern [ ] pattern , final char [ ] [ ] target , int pi , int ti , int pLeft , int tLeft , final int starsLeft ) { } private static boolean inStar ( final NamePattern [ ] pattern , final char [ ] [ ] target , int pi , int ti , final int pLeft , int tLeft , int starsLeft ) { } public FuzzyBoolean matchesInstanceof ( ResolvedType type ) { } public NamePattern extractName ( ) { } public boolean maybeExtractName ( String string ) { } public String maybeGetSimpleName ( ) { } public String maybeGetCleanName ( ) { } public TypePattern parameterizeWith ( Map typeVariableMap ) { } public TypePattern resolveBindings ( IScope scope , Bindings bindings , boolean allowBinding , boolean requireExactType ) { } private TypePattern maybeResolveToAnyPattern ( IScope scope , Bindings bindings , boolean allowBinding , boolean requireExactType ) { } private TypePattern maybeResolveToBindingTypePattern ( IScope scope , Bindings bindings , boolean allowBinding , boolean requireExactType ) { } private TypePattern resolveBindingsFromFullyQualifiedTypeName ( String fullyQualifiedName , IScope scope , Bindings bindings , boolean allowBinding , boolean requireExactType ) { String originalName = fullyQualifiedName ; ResolvedType resolvedTypeInTheWorld = null ; UnresolvedType type ; resolvedTypeInTheWorld = lookupTypeInWorld ( scope . getWorld ( ) , fullyQualifiedName ) ; if ( resolvedTypeInTheWorld . isGenericWildcard ( ) ) { type = resolvedTypeInTheWorld ; } else { type = lookupTypeInScope ( scope , fullyQualifiedName , this ) ; } <START_BUG> if ( type == ( ResolvedType . MISSING ) ) { <END_BUG> return resolveBindingsForMissingType ( resolvedTypeInTheWorld , originalName , scope , bindings , allowBinding , requireExactType ) ; } else { return resolveBindingsForExactType ( scope , type , fullyQualifiedName , requireExactType ) ; } } private UnresolvedType lookupTypeInScope ( IScope scope , String typeName , IHasPosition location ) { } private ResolvedType lookupTypeInWorld ( World world , String typeName ) { } private TypePattern resolveBindingsForExactType ( IScope scope , UnresolvedType aType , String fullyQualifiedName , boolean requireExactType ) { } private TypePattern resolveGenericWildcard ( IScope scope , UnresolvedType aType ) { } private TypePattern resolveParameterizedType ( IScope scope , UnresolvedType aType , boolean requireExactType ) { } private TypePattern resolveBindingsForMissingType ( ResolvedType typeFoundInWholeWorldSearch , String nameWeLookedFor , IScope scope , Bindings bindings , boolean allowBinding , boolean requireExactType ) { } private TypePattern resolveBindingsForTypeVariable ( IScope scope , UnresolvedTypeVariableReferenceType tvrType ) { } private boolean verifyTypeParameters ( ResolvedType baseType , IScope scope , boolean requireExactType ) { } public boolean isStar ( ) { } private boolean isNamePatternStar ( ) { } private String [ ] preMatch ( String [ ] possibleMatches ) { } public String toString ( ) { } public boolean equals ( Object other ) { } public int hashCode ( ) { } private static final byte VERSION = 1 ; public void write ( DataOutputStream s ) throws IOException { } public static TypePattern read ( VersionedDataInputStream s , ISourceContext context ) throws IOException { } public static TypePattern readTypePattern150 ( VersionedDataInputStream s , ISourceContext context ) throws IOException { } public static TypePattern readTypePatternOldStyle ( VersionedDataInputStream s , ISourceContext context ) throws IOException { } public Object accept ( PatternNodeVisitor visitor , Object data ) { } }

Fix:
if ( ( type instanceof ResolvedType ) && ( ( ( ResolvedType ) ( type ) ) . isMissing ( ) ) ) {