public void createAlias(final Name o, final String name) throws DataException {
		assert (o != null): "Supplied object is null";
		assert (name != null): "Supplied name is null";
		E obj;
		try {
			obj = (E) o;
		} catch (ClassCastException e) {
			throw new AssertionError("Type covariance error");
		}
		final String oldname = obj.getNameString();
		if (!(registry.containsKey(oldname) && (registry.get(oldname) == obj))) {
			logger.error("Object " + obj + " not registered");
			throw new DataException("Object not registered");
		}
		if (registry.containsKey(name)) {
			logger.error("Name " + name + " has already been registered for object " + registry.get(name));
			throw new DataException("Name has already been registered");
		}
		if (aliases.containsKey(name)) {
			logger.error("Name " + name + " is already an alias for object " + aliases.get(name));
			throw new DataException("Alias already exists");
		}
		aliases.put(name, obj);
	}