if (this.innerCflowEntries.contains(o)) return -1; else if (o.innerCflowEntries.contains(this)) return +1;
boolean isBelow = (kind == AdviceKind.CflowBelowEntry);  if (this.innerCflowEntries.contains(o)) return isBelow ? +1 : -1; else if (o.innerCflowEntries.contains(this)) return isBelow ? -1 : +1;
	public int compareTo(Object other) {		if (!(other instanceof BcelAdvice)) return 0;		BcelAdvice o = (BcelAdvice)other;				//System.err.println("compareTo: " + this + ", " + o);		if (kind.getPrecedence() != o.kind.getPrecedence()) {			if (kind.getPrecedence() > o.kind.getPrecedence()) return +1;			else return -1;		}				if (kind.isCflow()) {			if (this.innerCflowEntries.contains(o)) return -1;			else if (o.innerCflowEntries.contains(this)) return +1;			else return 0;		}						if (kind.isPerEntry() || kind == AdviceKind.Softener) {			return 0;		}				//System.out.println("compare: " + this + " with " + other);		World world = concreteAspect.getWorld();				int ret =			concreteAspect.getWorld().compareByDominates(				concreteAspect,				o.concreteAspect);		if (ret != 0) return ret;						ResolvedTypeX declaringAspect = getDeclaringAspect().resolve(world);		ResolvedTypeX o_declaringAspect = o.getDeclaringAspect().resolve(world);						if (declaringAspect == o_declaringAspect) {		    if (kind.isAfter() || o.kind.isAfter()) {		    	return this.getStart() < o.getStart() ? -1: +1;		    } else {		    	return this.getStart()< o.getStart() ? +1: -1;		    }		} else if (declaringAspect.isAssignableFrom(o_declaringAspect)) {			return -1;		} else if (o_declaringAspect.isAssignableFrom(declaringAspect)) {			return +1;		} else {			return 0;		}	}