private Iterator getPointcuts() {
public Iterator getPointcuts() {
    private Iterator getPointcuts() {        final Iterators.Filter dupFilter = Iterators.dupFilter();        // same order as fields        Iterators.Getter typeGetter = new Iterators.Getter() {            public Iterator get(Object o) {                return                     dupFilter.filter(                        ((ResolvedTypeX)o).getDirectSupertypes());            }        };        Iterators.Getter pointcutGetter = new Iterators.Getter() {            public Iterator get(Object o) {                //System.err.println("getting for " + o);                return Iterators.array(((ResolvedTypeX)o).getDeclaredPointcuts());            }        };        return             Iterators.mapOver(                Iterators.recur(this, typeGetter),                pointcutGetter);    }