if (this.state == CONCRETE) return ret; this.state = CONCRETE;
partiallyConcretized = ret;
	public Pointcut concretize1(ResolvedTypeX inAspect, IntMap bindings) {		IfPointcut ret = new IfPointcut(testMethod, extraParameterFlags);		if (this.state == CONCRETE) return ret;		this.state = CONCRETE;		if (bindings.directlyInAdvice()) {			Advice advice = bindings.getEnclosingAdvice();			ret.baseArgsCount = advice.getBaseParameterCount();			ret.residueSource = advice.getPointcut().concretize(inAspect, ret.baseArgsCount, advice);		} else {			ResolvedPointcutDefinition def = bindings.peekEnclosingDefinitition();			if (def == CflowPointcut.CFLOW_MARKER) {				inAspect.getWorld().getMessageHandler().handleMessage(				    MessageUtil.error("if not supported lexically within cflow (compiler limitation)",				    					null));				return Pointcut.makeMatchesNothing(Pointcut.CONCRETE);			}			ret.baseArgsCount = def.getParameterTypes().length;						IntMap newBindings = IntMap.idMap(ret.baseArgsCount);			newBindings.copyContext(bindings);			ret.residueSource = def.getPointcut().concretize(inAspect, newBindings);		}				return ret;	}