code: @Override
    public FastSet intersection(IntSet other)
    {
      if (isEmpty() || other == null || other.isEmpty()) {
        return empty();
      }
      if (other == this) {
        return clone();
      }
  
      final FastSet o = convert(other);
      FastSet res = new FastSet(Math.min(firstEmptyWord, o.firstEmptyWord));
      res.firstEmptyWord = res.words.length;
  
      final int[] localWords = words;     // faster
      final int[] localOtherWords = o.words;   // faster
      final int[] localResWords = res.words;   // faster
  
      for (int i = 0; i < res.firstEmptyWord; i++) {
        localResWords[i] = localWords[i] & localOtherWords[i];
      }
      res.fixFirstEmptyWord();
      res.size = -1;
      return res;
    }
docs: {@inheritDoc}