ShadowMunger m = Advice.makeSoftener(world, concretePointcut, d.getException(),inAspect);
	public void addDeclare(Declare declare) {		// this is not extensible, oh well		if (declare instanceof DeclareErrorOrWarning) {			ShadowMunger m = new Checker((DeclareErrorOrWarning)declare);			addShadowMunger(m);		} else if (declare instanceof DeclarePrecedence) {			declareDominates.add(declare);		} else if (declare instanceof DeclareParents) {			DeclareParents dp = (DeclareParents)declare;			exposeTypes(dp.getParents().getExactTypes());			declareParents.add(dp);		} else if (declare instanceof DeclareSoft) {			DeclareSoft d = (DeclareSoft)declare;			Pointcut concretePointcut = d.getPointcut().concretize(inAspect, 0);			declareSofts.add(new DeclareSoft(d.getException(), concretePointcut));			ShadowMunger m = Advice.makeSoftener(world, concretePointcut, d.getException(),inAspect);			addConcreteShadowMunger(m);		} else {			throw new RuntimeException("unimplemented");		}	}