public final void unsubscribeReceiver(
			ClientReceiverInterface receiver, SystemObject[] objects, DataDescription dataDescription) {
		if((_highLevelCommunication == null) || (_cacheManager == null)) {
			throw new InitialisationNotCompleteException(
					"Die Datenverteiler-Applikationsfunktionen sind noch nicht initialisiert."
			);
		}
		// Wenn in der Datadescription keine Simulationsvariante explizit vorgegeben wurde, dann muss für die Anmeldung beim Datenverteiler die über
		// Aufrufparameter von außen vorgebbare Simulationsvariante benutzt werden
		short externalSimulationVariant = dataDescription.getSimulationVariant();
		if(externalSimulationVariant == (short)-1) {
			externalSimulationVariant = _dafParameters.getSimulationVariant();
		}

		for(int i = 0; i < objects.length; ++i) {
			BaseSubscriptionInfo baseSubscriptionInfo = new BaseSubscriptionInfo(
					objects[i].getId(), dataDescription.getAttributeGroup().getAttributeGroupUsage(dataDescription.getAspect()), externalSimulationVariant
			);
			ReceiveSubscriptionObject receiveSubscriptionObject = _receiverObjectTable.get(
					baseSubscriptionInfo
			);
			if(receiveSubscriptionObject == null) {
				continue;
			}
			if(receiveSubscriptionObject.removeSubscription(receiver, _receiverManager)) {
				if(receiveSubscriptionObject.isValidSubscription()) {
					if(_highLevelCommunication != null) {
						_highLevelCommunication.sendReceiveSubscription(receiveSubscriptionObject.getReceiveSubscriptionInfo());
					}
				}
				else {
					_receiverObjectTable.remove(baseSubscriptionInfo);
					_cacheManager.cleanCache(baseSubscriptionInfo);
					if(_highLevelCommunication != null) {
						_highLevelCommunication.sendReceiveUnsubscription(baseSubscriptionInfo);
					}
				}
			}
		}
	}