public void add(SystemObject[] objects) throws ConfigurationChangeException {
		if(checkChangePermit()) {
			// wenn die Menge bereits aktiviert oder freigegeben wurde, dann darf nichts mehr geändert werden, es sei denn
			// die Referenzierungsart ist "Gerichtete Assoziation", dann darf in der in Bearbeitung befindlichen Version Elemente hinzugefügt werden
			if(!(getObjectSetType().getReferenceType() == ReferenceType.ASSOCIATION)
					&& !RelaxedModelChanges.getInstance(getDataModel()).allowObjectSetAdd(this)) {
				// also Komposition und Aggregation
				if(getValidSince() < getConfigurationArea().getModifiableVersion()) {
					// die Menge wurde bereits aktiviert
					throw new ConfigurationChangeException(
							"Die Menge " + getNameOrPidOrId() + " darf nicht mehr verändert werden, "
							+ "da sie bereits aktiviert oder zur Übernahme / Aktivierung freigegeben wurde und die Referenzierungsart "
							+ getObjectSetType().getReferenceType() + " lautet."
					);
				}
			}

			// Die Menge hat als Referenzierungsart "Assoziation" oder wurde gerade erst erstellt.
			// ermitteln, welche Elemente sich in der in Bearbeitung befindlichen Version befinden
			final Set<SystemObject> elementsInModifiableVersion = new HashSet<SystemObject>(getElementsInModifiableVersion());

			// Typ-Überprüfung der Elemente wird nur in der Konsistenzprüfung vorgenommen, da hier die zu betrachtende Version des Mengen-Typs nicht bekannt ist.
			// ermitteln, welche Typen in der Menge zugelassen sind
//			final Set<SystemObjectType> objectTypes = new HashSet<SystemObjectType>();
//			final List<SystemObject> objectTypesInModifiableVersion = getObjectSetType().getNonMutableSet("ObjektTypen").getElementsInModifiableVersion();
//			for(SystemObject systemObject : objectTypesInModifiableVersion) {
//				final SystemObjectType objType = (SystemObjectType)systemObject;
//				objectTypes.add(objType);
//			}

			// folgende Menge enthält die Elemente, die tatsächlich hinzugefügt werden
			final Set<SystemObject> addSet = new LinkedHashSet<SystemObject>();

			// hinzuzufügende Elemente werden überprüft
			for(SystemObject systemObject : objects) {
				// Typ-Überprüfung
//				if(isTypeOfObjectAllowed(systemObject.getType(), objectTypes)) {
				// prüfen, ob das Objekt bereits in der Menge ist
				if(!elementsInModifiableVersion.contains(systemObject)) {
					addSet.add(systemObject);
				}
//				}
//				else {
//					throw new ConfigurationChangeException(
//							"Der Typ " + systemObject.getType().getNameOrPidOrId() + " des Objekts " + systemObject.getNameOrPidOrId()
//							+ " ist in dieser Konfigurationsmenge " + getNameOrPidOrId() + " nicht erlaubt."
//					);
//				}
			}

			// hinzufügen der Elemente zu der Menge
			if(!addSet.isEmpty()) {
				setConfigurationData(addSet.toArray(new SystemObject[addSet.size()]), null, getConfigurationArea().getModifiableVersion());
			}
		}
		else {
			throw new ConfigurationChangeException(
					"Es liegt keine Berechtigung zum Verändern dieser Menge '" + getNameOrPidOrId() + "' vor."
					+ " Der Verantwortliche der Konfiguration ist nicht für den Konfigurationsbereich '" + getConfigurationArea().getNameOrPidOrId()
					+ "' zuständig."
			);
		}
	}