world.showMessage(IMessage.INFO,"successfully verified type "+requiredTypeName+ " exists.  Originates from "+rtx.getSourceLocation().getSourceFile(),null,null);
world.showMessage(IMessage.INFO, WeaverMessages.format(WeaverMessages.VERIFIED_REWEAVABLE_TYPE,requiredTypeName,rtx.getSourceLocation().getSourceFile()), null,null);
    public void processReweavableStateIfPresent(String className, BcelObjectType classType) {		// If the class is marked reweavable, check any aspects around when it was built are in this world		WeaverStateInfo wsi = classType.getWeaverState();				if (wsi!=null && wsi.isReweavable()) { // Check all necessary types are around!			world.showMessage(IMessage.INFO,"processing reweavable type "+className+": "+classType.getSourceLocation().getSourceFile(),null,null);			Set aspectsPreviouslyInWorld = wsi.getAspectsAffectingType();			if (aspectsPreviouslyInWorld!=null) {				for (Iterator iter = aspectsPreviouslyInWorld.iterator(); iter.hasNext();) {					String requiredTypeName = (String) iter.next();					if (!alreadyConfirmedReweavableState.contains(requiredTypeName)) {						ResolvedTypeX rtx = world.resolve(TypeX.forName(requiredTypeName),true);						boolean exists = rtx!=ResolvedTypeX.MISSING;						if (!exists) {							world.showMessage(IMessage.ERROR, "type " + requiredTypeName + 								" is needed by reweavable type " + className,								classType.getSourceLocation(), null);						} else {							if (!world.getMessageHandler().isIgnoring(IMessage.INFO))							  world.showMessage(IMessage.INFO,"successfully verified type "+requiredTypeName+		                        " exists.  Originates from "+rtx.getSourceLocation().getSourceFile(),null,null);							alreadyConfirmedReweavableState.add(requiredTypeName);						}					}						}			}			classType.setJavaClass(Utility.makeJavaClass(classType.getJavaClass().getFileName(), wsi.getUnwovenClassFileData()));		} else {			classType.resetState();		}	}