@Override
 public PrimitiveIterator.OfInt iterator() {
   if (intermediateType.shouldUseIntermediate(sorted, distinct)) {
     IntStream stream = performIntermediateRemoteOperation(Function.identity());
     return stream.iterator();
   } else {
     return remoteIterator();
   }
 }