@Override
    public int compare(Object o1, Object o2) {
      double w1 = o1 instanceof Weighted ? ((Weighted)o1).getWeight() : Double.POSITIVE_INFINITY;
      double w2 = o2 instanceof Weighted ? ((Weighted)o2).getWeight() : Double.POSITIVE_INFINITY;
      return Double.compare(w1, w2);
    }
@Override
    public int compare(Object o1, Object o2)