boolean isSystemObjectDifferent(SystemObjectProperties property, SystemObject systemObject) {
		final SystemObjectType propertyType = getType(property.getType());

		// Typ vergleichen
		if(propertyType != systemObject.getType()) {
			_debug.finer("Der Typ des konkreten Objekts " + systemObject.getPidOrNameOrId() + " passt nicht", systemObject.getType().getPidOrNameOrId());
			return true;
		}

		final ConfigurationConfigurationObject configProperty = (ConfigurationConfigurationObject)property;

		final List<ConfigurationDataset> datasets = new LinkedList<ConfigurationDataset>();
		final List<ConfigurationObjectSet> objectSets = new LinkedList<ConfigurationObjectSet>();
		for(ConfigurationObjectElements elements : configProperty.getDatasetAndObjectSet()) {
			if(elements instanceof ConfigurationDataset) {
				datasets.add((ConfigurationDataset)elements);
			}
			else if(elements instanceof ConfigurationObjectSet) {
				objectSets.add((ConfigurationObjectSet)elements);
			}
		}
		// Datensätze prüfen
		if(isDatasetsDifferent(datasets, systemObject)) {
			_debug.finer("Die Datensätze am Objekt sind unterschiedlich", systemObject.getPidOrNameOrId());
			return true;
		}

		// wenn es sich um ein konfigurierendes Objekt handelt ...
		if(propertyType.isConfigurating()) {
			// Mengen prüfen
			if(isSystemObjectSetsDifferent(objectSets, (ConfigurationObject)systemObject)) {
				_debug.finer("Die Mengen am Objekt sind unterschiedlich", systemObject.getPidOrNameOrId());
				return true;
			}

			// Default-Parameter-Datensätze
			if(isDefaultParameterDifferent(configProperty.getDefaultParameters(), systemObject)) {
				_debug.finer("Die Default-Parameter-Datensätze sind unterschiedlich", systemObject.getPidOrNameOrId());
				return true;
			}
		}
		return false;
	}