Buggy code:
public class CrosscuttingMembers { private ResolvedType inAspect ; private World world ; private PerClause perClause ; private List shadowMungers = new ArrayList ( 4 ) ; private List typeMungers = new ArrayList ( 4 ) ; private List lateTypeMungers = new ArrayList ( 0 ) ; private List declareParents = new ArrayList ( 4 ) ; private List declareSofts = new ArrayList ( 0 ) ; private List declareDominates = new ArrayList ( 4 ) ; private List declareAnnotationsOnType = new ArrayList ( ) ; private List declareAnnotationsOnField = new ArrayList ( ) ; private List declareAnnotationsOnMethods = new ArrayList ( ) ; public CrosscuttingMembers ( ResolvedType inAspect ) { } public void addConcreteShadowMunger ( ShadowMunger m ) { } public void addShadowMungers ( Collection c ) { } private void addShadowMunger ( ShadowMunger m ) { } public void addTypeMungers ( Collection c ) { } public void addTypeMunger ( ConcreteTypeMunger m ) { } public void addLateTypeMungers ( Collection c ) { } public void addLateTypeMunger ( ConcreteTypeMunger m ) { } public void addDeclares ( Collection c ) { } public void addDeclare ( Declare declare ) { } public void exposeTypes ( Collection typesToExpose ) { } public void exposeType ( UnresolvedType typeToExpose ) { } public void addPrivilegedAccesses ( Collection accessedMembers ) { } private void addPrivilegedAccess ( ResolvedMember member ) { } public Collection getCflowEntries ( ) { } public boolean replaceWith ( CrosscuttingMembers other , boolean careAboutShadowMungers ) { boolean changed = false ; if ( ( ( perClause ) == null ) || ( ! ( perClause . equals ( other . perClause ) ) ) ) { changed = true ; perClause = other . perClause ; } if ( careAboutShadowMungers ) { Set theseShadowMungers = new HashSet ( ) ; theseShadowMungers . addAll ( shadowMungers ) ; Set otherShadowMungers = new HashSet ( ) ; otherShadowMungers . addAll ( other . shadowMungers ) ; PointcutRewriter pr = new PointcutRewriter ( ) ; for ( Iterator iter = otherShadowMungers . iterator ( ) ; iter . hasNext ( ) ; ) { ShadowMunger munger = ( ( ShadowMunger ) ( iter . next ( ) ) ) ; Pointcut p = munger . getPointcut ( ) ; Pointcut newP = pr . rewrite ( p ) ; munger . setPointcut ( newP ) ; } if ( ! ( theseShadowMungers . equals ( otherShadowMungers ) ) ) { changed = true ; } shadowMungers = other . shadowMungers ; } Set theseTypeMungers = new HashSet ( ) ; Set otherTypeMungers = new HashSet ( ) ; if ( ! careAboutShadowMungers ) { for ( Iterator iter = typeMungers . iterator ( ) ; iter . hasNext ( ) ; ) { Object o = iter . next ( ) ; if ( o instanceof BcelTypeMunger ) { BcelTypeMunger typeMunger = ( ( BcelTypeMunger ) ( o ) ) ; if ( ! ( typeMunger . existsToSupportShadowMunging ( ) ) ) { theseTypeMungers . add ( typeMunger ) ; } } else { theseTypeMungers . add ( o ) ; } } for ( Iterator iter = other . typeMungers . iterator ( ) ; iter . hasNext ( ) ; ) { Object o = iter . next ( ) ; if ( o instanceof BcelTypeMunger ) { BcelTypeMunger typeMunger = ( ( BcelTypeMunger ) ( o ) ) ; if ( ! ( typeMunger . existsToSupportShadowMunging ( ) ) ) { otherTypeMungers . add ( typeMunger ) ; } } else { otherTypeMungers . add ( o ) ; } } } else { theseTypeMungers . addAll ( typeMungers ) ; otherTypeMungers . addAll ( other . typeMungers ) ; } if ( ! ( theseTypeMungers . equals ( otherTypeMungers ) ) ) { changed = true ; typeMungers = other . typeMungers ; } if ( ! ( lateTypeMungers . equals ( other . lateTypeMungers ) ) ) { changed = true ; lateTypeMungers = other . lateTypeMungers ; } if ( ! ( declareDominates . equals ( other . declareDominates ) ) ) { changed = true ; declareDominates = other . declareDominates ; } if ( ! ( declareParents . equals ( other . declareParents ) ) ) { changed = true ; declareParents = other . declareParents ; } if ( ! ( declareSofts . equals ( other . declareSofts ) ) ) { changed = true ; declareSofts = other . declareSofts ; } if ( ! ( declareAnnotationsOnType . equals ( other . declareAnnotationsOnType ) ) ) { changed = true ; declareAnnotationsOnType = other . declareAnnotationsOnType ; } if ( ! ( declareAnnotationsOnField . equals ( other . declareAnnotationsOnField ) ) ) { changed = true ; declareAnnotationsOnField = other . declareAnnotationsOnField ; } if ( ! ( declareAnnotationsOnMethods . equals ( other . declareAnnotationsOnMethods ) ) ) { changed = true ; declareAnnotationsOnMethods = other . declareAnnotationsOnMethods ; } <START_BUG> return true ; <END_BUG> } public PerClause getPerClause ( ) { } public void setPerClause ( PerClause perClause ) { } public List getDeclareDominates ( ) { } public List getDeclareParents ( ) { } public List getDeclareSofts ( ) { } public List getShadowMungers ( ) { } public List getTypeMungers ( ) { } public List getLateTypeMungers ( ) { } public List getDeclareAnnotationOnTypes ( ) { } public List getDeclareAnnotationOnFields ( ) { } public List getDeclareAnnotationOnMethods ( ) { } }

Fix:
return changed ;