code: void removeEntry(AsteriskQueueEntryImpl entry, Date dateReceived)
      {
          synchronized (serviceLevelTimerTasks)
          {
              if (serviceLevelTimerTasks.containsKey(entry))
              {
                  ServiceLevelTimerTask timerTask = serviceLevelTimerTasks.get(entry);
                  timerTask.cancel();
                  serviceLevelTimerTasks.remove(entry);
              }
          }
  
          boolean changed;
          synchronized (entries)
          {
              changed = entries.remove(entry);
  
              if (changed)
              {
                  // Keep the lock !
                  shift();
              }
          }
  
          // Fire outside lock
          if (changed)
          {
              entry.getChannel().setQueueEntry(null);
              entry.left(dateReceived);
              fireEntryLeave(entry);
          }
      }
docs: Removes the given queue entry from the queue.<p>
  Fires if needed:
  <ul>
  <li>PCE on channel</li>
  <li>EntryLeave on this queue</li>
  <li>PCE on other queue entries if shifted</li>
  </ul>
  
  @param entry        an existing entry object.
  @param dateReceived the remove event was received.