boolean isAttributeSetDifferent(AttributeProperties[] configurationAttributes, AttributeSet attributeSet) {
		final ObjectSet objectSet = attributeSet.getObjectSet("Attribute");

		// Ist die Menge vorhanden? Sie muss vorhanden sein!
		if(objectSet == null) {
			_debug.finer("Die Menge ist nicht vorhanden, muss aber vorhanden sein an", attributeSet.getPidOrNameOrId());
			return true;
		}

		// Stimmen die Mengen überein?
		final NonMutableSet nonMutableAttributeSet = (NonMutableSet)objectSet;
		final List<SystemObject> attributes = nonMutableAttributeSet.getElementsInModifiableVersion();

		// Anzahl der Elemente muss gleich sein	- Annahme: es ist keine dynamische Menge
		if(configurationAttributes.length != attributes.size()) {
			_debug.finer("Die Anzahl der Elemente ist unterschiedlich", attributeSet.getPidOrNameOrId());
			return true;
		}

		// Sind die Attribute der Menge gleich?
		int position = 1;
		for(AttributeProperties configurationAttribute : configurationAttributes) {
			String name = "";
			if(configurationAttribute instanceof ListAttributeProperties) {
				ListAttributeProperties attributeList = (ListAttributeProperties)configurationAttribute;
				name = attributeList.getName();
			}
			else {
				PlainAttributeProperties attribute = (PlainAttributeProperties)configurationAttribute;
				name = attribute.getName();
			}
			_debug.finer("Folgendes Attribut wird untersucht " + name);
			// Entsprechendes Element aus der bestehenden Liste holen.
			Attribute attribute = null;
			for(SystemObject systemObject : attributes) {
				Attribute att = (Attribute)systemObject;
				if(name.equals(att.getName())) {
					attribute = att;
					break;	// passendes Attribut gefunden
				}
			}
			if(isAttributeDifferent(configurationAttribute, attribute, position)) {
				_debug.finer("Attribut ist verschieden");
				return true;
			}
			position++;
		}
		return false;
	}