Buggy code:
, new boolean [ ] { false , false , true , true , true , true , true , false , false } , new boolean [ ] { false , false , false , false , false , false , false , true , false } , new boolean [ ] { false , false , false , false , false , false , false , false , true } } ; private static final boolean [ ] [ ] noConvertTable = new boolean [ ] [ ] { new boolean [ ] { true , true , false , false , true , false , true , false , false } , new boolean [ ] { false , true , false , false , true , false , false , false , false } , new boolean [ ] { false , false , true , false , false , false , false , false , false } , new boolean [ ] { false , false , false , true , false , false , false , false , false } , new boolean [ ] { false , false , false , false , true , false , false , false , false } , new boolean [ ] { false , false , false , false , false , true , false , false , false } , new boolean [ ] { false , false , false , false , true , false , true , false , false } , new boolean [ ] { false , false , false , false , false , false , false , true , false } , new boolean [ ] { false , false , false , false , false , false , false , false , true } } ; public final ResolvedMember [ ] getDeclaredFields ( ) { } public final ResolvedMember [ ] getDeclaredMethods ( ) { } public final ResolvedType [ ] getDeclaredInterfaces ( ) { } public final ResolvedMember [ ] getDeclaredPointcuts ( ) { } public final ResolvedType getSuperclass ( ) { } public ISourceContext getSourceContext ( ) { } } static class Missing extends ResolvedType { Missing ( ) { } public final String getName ( ) { } public final boolean isMissing ( ) { } public boolean hasAnnotation ( UnresolvedType ofType ) { } public final ResolvedMember [ ] getDeclaredFields ( ) { } public final ResolvedMember [ ] getDeclaredMethods ( ) { } public final ResolvedType [ ] getDeclaredInterfaces ( ) { } public final ResolvedMember [ ] getDeclaredPointcuts ( ) { } public final ResolvedType getSuperclass ( ) { } public final int getModifiers ( ) { } public final boolean isAssignableFrom ( ResolvedType other ) { } public final boolean isAssignableFrom ( ResolvedType other , boolean allowMissing ) { } public final boolean isCoerceableFrom ( ResolvedType other ) { } public boolean needsNoConversionFrom ( ResolvedType other ) { } public ISourceContext getSourceContext ( ) { } } public ResolvedMember lookupMemberNoSupers ( Member member ) { } public ResolvedMember lookupMemberWithSupersAndITDs ( Member member ) { } public ResolvedMember lookupDirectlyDeclaredMemberNoSupers ( Member member ) { } public ResolvedMember lookupMemberIncludingITDsOnInterfaces ( Member member ) { } private ResolvedMember lookupMemberIncludingITDsOnInterfaces ( Member member , ResolvedType onType ) { } protected List interTypeMungers = new ArrayList ( 0 ) ; public List getInterTypeMungers ( ) { } public List getInterTypeParentMungers ( ) { } public List getInterTypeMungersIncludingSupers ( ) { } public List getInterTypeParentMungersIncludingSupers ( ) { } private void collectInterTypeParentMungers ( List collector ) { } protected void collectInterTypeMungers ( List collector ) { } public void checkInterTypeMungers ( ) { } private boolean checkAbstractDeclaration ( ConcreteTypeMunger munger ) { } private ISourceLocation getMungerLocation ( ConcreteTypeMunger munger ) { } public ResolvedType getDeclaringType ( ) { if ( isArray ( ) ) return null ; String name = getName ( ) ; int lastDollar = name . lastIndexOf ( '$' ) ; <START_BUG> while ( lastDollar != ( - 1 ) ) { <END_BUG> ResolvedType ret = world . resolve ( UnresolvedType . forName ( name . substring ( 0 , lastDollar ) ) , true ) ; if ( ! ( ResolvedType . isMissing ( ret ) ) ) return ret ; lastDollar = name . lastIndexOf ( '$' , ( lastDollar - 1 ) ) ; } return null ; } public static boolean isVisible ( int modifiers , ResolvedType targetType , ResolvedType fromType ) { } public static boolean hasBridgeModifier ( int modifiers ) { } private static boolean samePackage ( ResolvedType targetType , ResolvedType fromType ) { } private boolean genericTypeEquals ( ResolvedType other ) { } public ResolvedType discoverActualOccurrenceOfTypeInHierarchy ( ResolvedType lookingFor ) { } public ConcreteTypeMunger fillInAnyTypeParameters ( ConcreteTypeMunger munger ) { } public void addInterTypeMunger ( ConcreteTypeMunger munger ) { } private boolean compareToExistingMembers ( ConcreteTypeMunger munger , List existingMembersList ) { } private boolean compareToExistingMembers ( ConcreteTypeMunger munger , Iterator existingMembers ) { } private boolean isDuplicateMemberWithinTargetType ( ResolvedMember existingMember , ResolvedType targetType , ResolvedMember itdMember ) { } public boolean checkLegalOverride ( ResolvedMember parent , ResolvedMember child ) { } private int compareMemberPrecedence ( ResolvedMember m1 , ResolvedMember m2 ) { } public static boolean isMoreVisible ( int m1 , int m2 ) { } private static boolean isPackage ( int i ) { } private void interTypeConflictError ( ConcreteTypeMunger m1 , ConcreteTypeMunger m2 ) { } public ResolvedMember lookupSyntheticMember ( Member member ) { } public void clearInterTypeMungers ( ) { } public boolean isTopmostImplementor ( ResolvedType interfaceType ) { } public ResolvedType getTopmostImplementor ( ResolvedType interfaceType ) { } private ResolvedType findHigher ( ResolvedType other ) { } public List getExposedPointcuts ( ) { } private void addPointcutsResolvingConflicts ( List acc , List added , boolean isOverriding ) { } public ISourceLocation getSourceLocation ( ) { }

Fix:
while ( lastDollar > 0 ) {