public final void unsubscribeSender(
			ClientSenderInterface sender, SystemObject[] objects, DataDescription dataDescription) {
		if(_highLevelCommunication == null) {
			throw new InitialisationNotCompleteException(
					"Die Datenverteiler-Applikationsfunktionen sind noch nicht initialisiert."
			);
		}
		if((sender == null) || (objects == null) || (dataDescription == null)) {
			return;
		}

		// 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
			);
			SendSubscriptionObject sendSubscriptionObject = _senderObjectTable.get(baseSubscriptionInfo);
			if(sendSubscriptionObject != null) {
				sendSubscriptionObject.removeSender(sender);
				if(sendSubscriptionObject.isEmpty()) {
					_senderObjectTable.remove(baseSubscriptionInfo);
					if(_highLevelCommunication != null) {
						_highLevelCommunication.sendSendUnsubscription(baseSubscriptionInfo);
					}
				}
			}
		}
	}