void directModification(final Modification mod) {
		// die Mengen und bei Komposition auch die Elemente werden betrachtet
		final List<ObjectSet> sets = getObjectSets();
		for(ObjectSet set : sets) {
			if(set.getObjectSetType().getReferenceType() == ReferenceType.COMPOSITION) {
				// Elemente
				final List<SystemObject> elements = set.getElements();
				for(SystemObject element : elements) {
					final ConfigConfigurationObject configConfigurationObject = (ConfigConfigurationObject)element;
					configConfigurationObject.directModification(mod);   // rekursiv die Elemente weiterverarbeiten
				}
			}
			// die Menge wird auch modifiziert
			final ConfigConfigurationObject configConfigurationObject = (ConfigConfigurationObject)set;
			configConfigurationObject.directModification(mod);
		}

		// Sans, STS, KonfigAss: lookup erstellen und benutzen
		ConfigDataModel dataModel = (ConfigDataModel)getDataModel();
		Map<ConfigurationArea, Short> configurationVersions = new HashMap<ConfigurationArea, Short>();
		Collection<ConfigurationArea> areas = dataModel.getAllConfigurationAreas().values();

		for (ConfigurationArea configurationArea: areas) {
			configurationVersions.put(configurationArea, configurationArea.getModifiableVersion());
		}

		ObjectLookup lookup = new VersionedView(dataModel, configurationVersions);

		// alle Datensätze prüfen
		final Collection<AttributeGroupUsage> atgUsages = getUsedAttributeGroupUsages();
		for(AttributeGroupUsage atgUsage : atgUsages) {
			final Data data = getConfigurationData(atgUsage, lookup);
			if(data != null) {
				// vorhandene Referenzen auf Komposition prüfen und Objekte bearbeiten
				modifyDependentObjects(data, mod);
			}
		}
		if(mod == Modification.INVALIDATE) {
			((ConfigurationObjectInfo)_systemObjectInfo).invalidate();
		}
		else if(mod == Modification.REVALIDATE) {
			((ConfigurationObjectInfo)_systemObjectInfo).revalidate();
		}
	}