code: public static <T> Iterator<T> tail(Iterator<T> self) {
          if (!self.hasNext()) {
              throw new NoSuchElementException("Cannot access tail() for an empty Iterator");
          }
          self.next();
          return self;
      }
docs: Returns the original iterator after throwing away the first element.
  
  @param self the original iterator
  @return the iterator without its first element
  @throws NoSuchElementException if the array is empty and you try to access the tail()
  @since 1.8.1