docs: public static <T> Collection<T> init(Iterable<T> self) {
          if (!self.iterator().hasNext()) {
              throw new NoSuchElementException("Cannot access init() for an empty Iterable");
          }
          Collection<T> result;
          if (self instanceof Collection) {
              Collection<T> selfCol = (Collection<T>) self;
              result = createSimilarCollection(selfCol, selfCol.size() - 1);
          } else {
              result = new ArrayList<T>();
          }
          addAll(result, init(self.iterator()));
          return result;
      }