if (! this.isAspect() || this.isAbstract()) return Collections.EMPTY_LIST;
if (! this.isAspect() || this.isAbstract() || this.doesNotExposeShadowMungers()) return Collections.EMPTY_LIST;
    private final Collection collectShadowMungers() {        if (! this.isAspect() || this.isAbstract()) return Collections.EMPTY_LIST;		ArrayList acc = new ArrayList();        final Iterators.Filter dupFilter = Iterators.dupFilter();        Iterators.Getter typeGetter = new Iterators.Getter() {            public Iterator get(Object o) {                return                     dupFilter.filter(                        ((ResolvedTypeX)o).getDirectSupertypes());            }        };        Iterator typeIterator = Iterators.recur(this, typeGetter);        while (typeIterator.hasNext()) {            ResolvedTypeX ty = (ResolvedTypeX) typeIterator.next();            acc.addAll(ty.getDeclaredShadowMungers());             }                return acc;    }