/**
  * Adds an entry at the end of the list of which this item is the head. @GuardedBy("manager.lock")
  */
 final void addLast(InternalJob entry) {
   InternalJob last = this;
   // find the end of the queue
   while (last.previous != null) last = last.previous;
   // add the new entry to the end of the queue
   last.previous = entry;
   entry.next = last;
   entry.previous = null;
 }
 /** Returns true if this job conflicts with the given job, and false otherwise. */
 final boolean isConflicting(InternalJob otherJob) {
   ISchedulingRule otherRule = otherJob.getRule();
   if (schedulingRule == null || otherRule == null) return false;
   // if one of the rules is a compound rule, it must be asked the question.
   if (schedulingRule.getClass() == MultiRule.class)
     return schedulingRule.isConflicting(otherRule);
   return otherRule.isConflicting(schedulingRule);
 }
 /** Removes this entry from any list it belongs to. Returns the receiver. */
 final InternalJob remove() {
   if (next != null) next.setPrevious(previous);
   if (previous != null) previous.setNext(next);
   next = previous = null;
   return this;
 }