docs: public static int unsignedDifference(ShortIterator set1, ShortIterator set2,
        final short[] buffer) {
      int pos = 0;
      if (!set2.hasNext()) {
        while (set1.hasNext()) {
          buffer[pos++] = set1.next();
        }
        return pos;
      }
      if (!set1.hasNext()) {
        return 0;
      }
      short v1 = set1.next();
      short v2 = set2.next();
      while (true) {
        if (toIntUnsigned(v1) < toIntUnsigned(v2)) {
          buffer[pos++] = v1;
          if (!set1.hasNext()) {
            return pos;
          }
          v1 = set1.next();
        } else if (v1 == v2) {
          if (!set1.hasNext()) {
            break;
          }
          if (!set2.hasNext()) {
            while (set1.hasNext()) {
              buffer[pos++] = set1.next();
            }
            return pos;
          }
          v1 = set1.next();
          v2 = set2.next();
        } else {// if (val1>val2)
          if (!set2.hasNext()) {
            buffer[pos++] = v1;
            while (set1.hasNext()) {
              buffer[pos++] = set1.next();
            }
            return pos;
          }
          v2 = set2.next();
        }
      }
      return pos;
    }