docs: public static <T> Iterator<T> concat( final Iterator<T> a,
                                            final Iterator<T> b ) {
          assert (a != null);
          assert (b != null);
  
          return new Iterator<T>() {
  
              @Override
              public boolean hasNext() {
                  return a.hasNext() || b.hasNext();
              }
  
              @Override
              public T next() {
                  if (a.hasNext()) {
                      return a.next();
                  }
  
                  return b.next();
              }
  
              @Override
              public void remove() {
                  throw new UnsupportedOperationException();
              }
          };
      }