/*
  * (non-Javadoc)
  *
  * @see
  * cz.cuni.mff.d3s.deeco.knowledge.ShadowKnowledgeManagerRegistry#unregister(cz.cuni
  * .mff.d3s.deeco.model.runtime.api.Trigger,
  * cz.cuni.mff.d3s.deeco.knowledge.ShadowsTriggerListener)
  */
 @Override
 public void unregister(Trigger trigger, ShadowsTriggerListener triggerListener) {
   // Remove from memory
   if (triggerListeners.containsKey(trigger)) {
     triggerListeners.get(trigger).remove(triggerListener);
   }
   // Unregister from kms
   for (KnowledgeManagerTriggerListener tListener :
       listenerToTriggerListeners.get(triggerListener))
     tListener.getKnowledgeManager().unregister(trigger, tListener);
   listenerToTriggerListeners.remove(triggerListener);
 }
 /*
  * (non-Javadoc)
  *
  * @see
  * cz.cuni.mff.d3s.deeco.knowledge.ReplicaListener#replicaRemoved(cz.cuni
  * .mff.d3s.deeco.knowledge.KnowledgeManager)
  */
 @Override
 public void replicaUnregistered(KnowledgeManager km, KnowledgeManagerContainer container) {
   List<KnowledgeManagerTriggerListener> toRemove = new LinkedList<>();
   for (List<KnowledgeManagerTriggerListener> tListeners : listenerToTriggerListeners.values()) {
     toRemove.clear();
     for (KnowledgeManagerTriggerListener tListener : tListeners)
       if (tListener.getKnowledgeManager().equals(km)) {
         km.unregister(tListener.getTrigger(), tListener);
         toRemove.add(tListener);
       }
     tListeners.removeAll(toRemove);
   }
 }