public class SortedSequencePriorityQueue2
  extends SortedSequencePriorityQueue implements PriorityQueue2 {
    public SortedSequencePriorityQueue2 (Comparator comp) {
      super(comp);
    }
    protected Locator locInsert(Item2 locitem) throws InvalidKeyException {
      Position p, curr;
      Object k = locitem.key();
      if (!comp.isComparable(k))
	throw new InvalidKeyException("The key is not valid");
      else
	if (S.isEmpty())
	  p = S.insertFirst(locitem);
	else if (comp.isGreaterThan(k, key(S.last())))
	  p = S.insertAfter(S.last(),locitem);
	else {
	  curr = S.first();
	  while (comp.isGreaterThan(k, key(curr)))
	    curr = S.after(curr);
	  p = S.insertBefore(curr,locitem);
	}
      locitem.setPosition(p);
      return (Locator) locitem;
    }
    protected Item2 locRemove(Locator loc) {
      S.remove(((Item2) loc).position());
      return (Item2) loc;
    }