}  if ((extraParameterFlags & ThisJoinPointStaticPart) != 0) { ((BcelShadow)shadow).getThisJoinPointStaticPartVar();
    public void specializeOn(Shadow shadow) {	  	if (getKind() == AdviceKind.Around) {	  		((BcelShadow)shadow).initializeForAroundClosure();	  	}    	    	//XXX this case is just here for supporting lazy test code    	if (getKind() == null) {			exposedState = new ExposedState(0);    		return;    	}    	if (getKind().isPerEntry()) {    		exposedState = new ExposedState(0);    	} else if (getKind().isCflow()) {    		exposedState = new ExposedState(nFreeVars);    	} else if (getSignature() != null) {			exposedState = new ExposedState(getSignature());    	} else {    		exposedState = new ExposedState(0);    		return;  //XXX this case is just here for supporting lazy test code    	}		pointcutTest = getPointcut().findResidue(shadow, exposedState);		        // make sure thisJoinPoint parameters are initialized        if ((extraParameterFlags & ThisJoinPoint) != 0) {        	((BcelShadow)shadow).getThisJoinPointVar();        }                if ((extraParameterFlags & ThisJoinPointStaticPart) != 0) {        	((BcelShadow)shadow).getThisJoinPointStaticPartVar();        }                if ((extraParameterFlags & ThisEnclosingJoinPointStaticPart) != 0) {        	((BcelShadow)shadow).getThisEnclosingJoinPointStaticPartVar();        }    }   