Buggy code:
public abstract class World implements Dump . INode { protected IMessageHandler messageHandler = IMessageHandler . SYSTEM_ERR ; protected ICrossReferenceHandler xrefHandler = null ; protected World . TypeMap typeMap = new World . TypeMap ( ) ; protected CrosscuttingMembersSet crosscuttingMembersSet = new CrosscuttingMembersSet ( this ) ; protected IHierarchy model = null ; protected Lint lint = new Lint ( this ) ; protected boolean XnoInline ; protected boolean XlazyTjp ; public boolean behaveInJava5Way = false ; private List dumpState_cantFindTypeExceptions = null ; protected World ( ) { } public void accept ( Dump . IVisitor visitor ) { } public ResolvedType [ ] resolve ( UnresolvedType [ ] types ) { } public ResolvedType resolve ( UnresolvedType ty , ISourceLocation isl ) { } public ResolvedType resolve ( UnresolvedType ty ) { } public ResolvedType resolve ( ResolvedType ty ) { } public ResolvedType getCoreType ( UnresolvedType tx ) { } public ResolvedType resolveTheGenericType ( UnresolvedType ty , boolean allowMissing ) { } public ResolvedType resolve ( UnresolvedType ty , boolean allowMissing ) { if ( ty instanceof ResolvedType ) { ResolvedType rty = ( ( ResolvedType ) ( ty ) ) ; rty . world = this ; return rty ; } if ( ty instanceof UnresolvedTypeVariableReferenceType ) { return ( ( UnresolvedTypeVariableReferenceType ) ( ty ) ) . resolve ( this ) ; } String signature = ty . getSignature ( ) ; ResolvedType ret = typeMap . get ( signature ) ; if ( ret != null ) { ret . world = this ; return ret ; } if ( ty . isArray ( ) ) { ret = new ResolvedType . Array ( signature , this , resolve ( ty . getComponentType ( ) , allowMissing ) ) ; } else { ret = resolveObjectType ( ty ) ; if ( ( ! allowMissing ) && ( ret == ( ResolvedType . MISSING ) ) ) { MessageUtil . error ( messageHandler , WeaverMessages . format ( CANT_FIND_TYPE , ty . getName ( ) ) ) ; if ( ( dumpState_cantFindTypeExceptions ) == null ) { dumpState_cantFindTypeExceptions = new ArrayList ( ) ; } dumpState_cantFindTypeExceptions . add ( new RuntimeException ( ( "Can't<seq2seq4repair_space>find<seq2seq4repair_space>type<seq2seq4repair_space>" + ( ty . getName ( ) ) ) ) ) ; } } if ( ty . isParameterizedType ( ) ) { for ( int i = 0 ; i < ( ty . typeParameters . length ) ; i ++ ) { ty . typeParameters [ i ] = resolve ( ty . typeParameters [ i ] , allowMissing ) ; } } <START_BUG> if ( ( typeMap . get ( signature ) ) == null ) { <END_BUG> typeMap . put ( signature , ret ) ; } return ret ; } public ResolvedType resolve ( String name ) { } protected final ResolvedType resolveObjectType ( UnresolvedType ty ) { } protected abstract ReferenceTypeDelegate resolveObjectType ( ReferenceType ty ) { } protected final boolean isCoerceableFrom ( ResolvedType type , ResolvedType other ) { } protected final boolean isAssignableFrom ( ResolvedType type , ResolvedType other ) { } public boolean needsNoConversionFrom ( ResolvedType type , ResolvedType other ) { } protected final boolean isInterface ( UnresolvedType type ) { } protected final ResolvedType getSuperclass ( UnresolvedType type ) { } protected final UnresolvedType [ ] getDeclaredInterfaces ( UnresolvedType type ) { } protected final int getModifiers ( UnresolvedType type ) { } protected final ResolvedMember [ ] getDeclaredFields ( UnresolvedType type ) { } protected final ResolvedMember [ ] getDeclaredMethods ( UnresolvedType type ) { } protected final ResolvedMember [ ] getDeclaredPointcuts ( UnresolvedType type ) { } public ResolvedMember resolve ( Member member ) { } protected int getModifiers ( Member member ) { } protected String [ ] getParameterNames ( Member member ) { } protected UnresolvedType [ ] getExceptions ( Member member ) { } public ResolvedPointcutDefinition findPointcut ( UnresolvedType typeX , String name ) { } public abstract Advice concreteAdvice ( AjAttribute . AdviceAttribute attribute , Pointcut pointcut , Member signature ) { } public final Advice concreteAdvice ( AdviceKind kind , Pointcut p , Member signature , int extraParameterFlags , IHasSourceLocation loc ) { } public ConcreteTypeMunger makeCflowStackFieldAdder ( ResolvedMember cflowField ) { } public ConcreteTypeMunger makeCflowCounterFieldAdder ( ResolvedMember cflowField ) { } public ConcreteTypeMunger makePerClauseAspect ( ResolvedType aspect , PerClause . Kind kind ) { } public abstract ConcreteTypeMunger concreteTypeMunger ( ResolvedTypeMunger munger , ResolvedType aspectType ) { } public IMessageHandler getMessageHandler ( ) { } public void setMessageHandler ( IMessageHandler messageHandler ) { } public void setXRefHandler ( ICrossReferenceHandler xrefHandler ) { } public void showMessage ( Kind kind , String message , ISourceLocation loc1 , ISourceLocation loc2 ) { } public int compareByDominates ( ResolvedType aspect1 , ResolvedType aspect2 ) { } public int comparePrecedence ( ResolvedType aspect1 , ResolvedType aspect2 ) { } public List getDeclareParents ( ) { } public List getDeclareAnnotationOnTypes ( ) { } public List getDeclareAnnotationOnFields ( ) { } public List getDeclareAnnotationOnMethods ( ) { } public List getDeclareSoft ( ) { } public CrosscuttingMembersSet getCrosscuttingMembersSet ( ) { } public IHierarchy getModel ( ) { } public void setModel ( IHierarchy model ) { } public Lint getLint ( ) { } public void setLint ( Lint lint ) { } public boolean isXnoInline ( ) { } public void setXnoInline ( boolean xnoInline ) { } public boolean isXlazyTjp ( ) { } public void setXlazyTjp ( boolean b ) { } public ReferenceType lookupOrCreateName ( UnresolvedType ty ) { } protected static class TypeMap { private Map tMap = new HashMap ( ) ; private Map expendableMap = new WeakHashMap ( ) ; public ResolvedType put ( String key , ResolvedType type ) { } public ResolvedType get ( String key ) { } public ResolvedType remove ( String key ) { } private boolean isExpendable ( ResolvedType type ) { } } public void setBehaveInJava5Way ( boolean b ) { } }

Fix:
if ( ( ( typeMap . get ( signature ) ) == null ) && ( ! ( MISSING . equals ( ret ) ) ) ) {