code: public static <T> BufferedIterator<T> bufferedIterator(List<T> self) {
          return new ListBufferedIterator<T>(self);
      }
docs: Returns a <code>BufferedIterator</code> that allows examining the next element without
  consuming it.
  <pre class="groovyTestCase">
  assert [1, 2, 3, 4].bufferedIterator().with { [head(), toList()] } == [1, [1, 2, 3, 4]]
  </pre>
  
  @param self a list
  @return a BufferedIterator for traversing self
  @since 2.5.0