docs: public static <T> int compare(Stream<T> s1, Stream<T> s2, Comparator<T> comp)
      {
          Iterator<T> os1 = s1.iterator();
          Iterator<T> os2 = s2.iterator();
          Comparable<T> comparable = null;
          while (os1.hasNext() && os2.hasNext())
          {
              T n1 = os1.next();
              T n2 = os2.next();
              int c;
              if (comp == null)
              {
                  comparable = (Comparable<T>) n1;
                  c = comparable.compareTo(n2);
              }
              else
              {
                  c = comp.compare(n1, n2);
              }
              if (c != 0)
              {
                  return c;
              }
          }
          boolean hn1 = os1.hasNext();
          boolean hn2 = os2.hasNext();
          if (hn1 == hn2)
          {
              return 0;
          }
          if (hn1)
          {
              return 1;
          }
          else
          {
              return -1;
          }
      }