code: public IntList intersection(final IntList b) {
          if (N.isNullOrEmpty(b)) {
              return new IntList();
          }
  
          final Multiset<Integer> bOccurrences = b.toMultiset();
  
          final IntList c = new IntList(N.min(9, size(), b.size()));
  
          for (int i = 0, len = size(); i < len; i++) {
              if (bOccurrences.getAndRemove(elementData[i]) > 0) {
                  c.add(elementData[i]);
              }
          }
  
          return c;
      }
docs: Returns a new list with all the elements occurred in both <code>a</code> and <code>b</code> by occurrences.
  
  <pre>
  IntList a = IntList.of(0, 1, 2, 2, 3);
  IntList b = IntList.of(2, 5, 1);
  a.retainAll(b); // The elements remained in a will be: [1, 2, 2].
  
  IntList a = IntList.of(0, 1, 2, 2, 3);
  IntList b = IntList.of(2, 5, 1);
  IntList c = a.intersection(b); // The elements c in a will be: [1, 2].
  </pre>
  
  @param b
  @return