code: @Override
      public int compareTo(GroupMetadata<G> o) {
          //return ((Long)priority).compareTo(o.priority);
          int comparison = ((Long)priority).compareTo(o.priority);
          if(comparison == 0) {
              if(!group.equals(o.group)) {
                  return -1;
              }
          }
          return comparison;
      }
docs: compareTo must be consistent with equals.  If the priority is
  equal however, and the groups are NOT equal, we want to place
  *this* item at the end of the priority queue.
  
  TODO: do we still need to do this "hack" now that we use a skiplist and
  not a priority queue that breaks ties arbitrarily?