docs: void createNewEntry(AsteriskChannelImpl channel, int reportedPosition, Date dateReceived)
      {
          AsteriskQueueEntryImpl qe = new AsteriskQueueEntryImpl(server, this, channel, reportedPosition, dateReceived);
  
          long delay = serviceLevel * 1000L;
          if (delay > 0)
          {
              ServiceLevelTimerTask timerTask = new ServiceLevelTimerTask(qe);
              timer.schedule(timerTask, delay);
              synchronized (serviceLevelTimerTasks)
              {
                  serviceLevelTimerTasks.put(qe, timerTask);
              }
          }
  
          synchronized (entries)
          {
              entries.add(qe); // at the end of the list
  
              // Keep the lock !
              // This will fire PCE on the newly created queue entry
              // but hopefully this one has no listeners yet
              shift();
          }
  
          // Set the channel property ony here as queue entries and channels
          // maintain a reciprocal reference.
          // That way property change on channel and new entry event on queue will be
          // lanched when BOTH channel and queue are correctly set.
          channel.setQueueEntry(qe);
          fireNewEntry(qe);
          server.fireNewQueueEntry(qe);
      }