org_aspectj_ajde_core_tests_OutxmlTest_java
org.aspectj.weaver.CrosscuttingMembersSet
private boolean addOrReplaceDescendantsOf(ResolvedType aspectType, boolean inWeavePhase) {
        Set<ResolvedType> knownAspects = this.members.keySet();
        HashSet<ResolvedType> toBeReplaced = new HashSet<ResolvedType>();
        for (ResolvedType candidateDescendant : knownAspects) {
            if (candidateDescendant == aspectType || !aspectType.isAssignableFrom(candidateDescendant, true)) continue;
            toBeReplaced.add(candidateDescendant);
        }
        boolean change = false;
        for (ResolvedType next : toBeReplaced) {
            boolean thisChange = this.addOrReplaceAspect(next, inWeavePhase);
            change = change || thisChange;
        }
        return change;
    }
 -> java.util.Map.keySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean
 [CALL] -> java.util.Map.keySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean [EXIT]