code: @Override
    public int compareTo(IntSet o)
    {
      // empty set cases
      if (this.isEmpty() && o.isEmpty()) {
        return 0;
      }
      if (this.isEmpty()) {
        return -1;
      }
      if (o.isEmpty()) {
        return 1;
      }
  
      final FastSet other = convert(o);
      final int[] localWords = words;       // faster
      final int[] localOtherWords = other.words;   // faster
  
      if (firstEmptyWord > other.firstEmptyWord) {
        return 1;
      }
      if (firstEmptyWord < other.firstEmptyWord) {
        return -1;
      }
      for (int i = firstEmptyWord - 1; i >= 0; i--) {
        long w1 = localWords[i] & 0xFFFFFFFFL;
        long w2 = localOtherWords[i] & 0xFFFFFFFFL;
        int res = w1 < w2 ? -1 : (w1 > w2 ? 1 : 0);
        if (res != 0) {
          return res;
        }
      }
      return 0;
    }
docs: {@inheritDoc}