if (!includeAdviceLike) return ret;
	private final Collection collectDeclares() {		if (! this.isAspect() ) return Collections.EMPTY_LIST;				ArrayList ret = new ArrayList();		//if (this.isAbstract()) {		for (Iterator i = getDeclares().iterator(); i.hasNext();) {			Declare dec = (Declare) i.next();			if (!dec.isAdviceLike()) ret.add(dec);		}		if (!this.isAbstract()) {			//ret.addAll(getDeclares());			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();	        	//System.out.println("super: " + ty + ", " + );	        	for (Iterator i = ty.getDeclares().iterator(); i.hasNext();) {					Declare dec = (Declare) i.next();					if (dec.isAdviceLike()) ret.add(dec);				}	        }		}				return ret;    }