public synchronized void remove(NotifierTarget target) {
		if (mNameMap.containsKey(target)) {
			if (target instanceof BatchNotifierTarget) {
				mBatchTargets.remove(target);
			}
			for (String name : mNameMap.get(target)) {
				if (name.length() > 0) {
					HashSet<NotifierTarget> set = mProductionMap.get(name);
					if (set != null) {
						set.remove(target);
						if (set.isEmpty()) {
							mProductionMap.remove(name);
						}
					}
				}
			}
			mNameMap.remove(target);
		}
	}