((BcelShadow)shadow).getEnclosingClass().warnOnAddedStaticInitializer(shadow,getSourceLocation());
    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);				// these initializations won't be performed by findResidue, but need to be		// so that the joinpoint is primed for weaving		if (getKind() == AdviceKind.PerThisEntry) {			shadow.getThisVar();		} else if (getKind() == AdviceKind.PerTargetEntry) {			shadow.getTargetVar();		}				        // make sure thisJoinPoint parameters are initialized        if ((getExtraParameterFlags() & ThisJoinPointStaticPart) != 0) {        	((BcelShadow)shadow).getThisJoinPointStaticPartVar();        }        if ((getExtraParameterFlags() & ThisJoinPoint) != 0) {        	((BcelShadow)shadow).requireThisJoinPoint(pointcutTest != Literal.TRUE && getKind() != AdviceKind.Around);        }                if ((getExtraParameterFlags() & ThisEnclosingJoinPointStaticPart) != 0) {        	((BcelShadow)shadow).getThisEnclosingJoinPointStaticPartVar();        }    }   