code: @Override
    public T next() throws NoSuchElementException {
      T result;
      if (peekedItem != null) {
        result = peekedItem.getValue();
        peekedItem = null;
      } else {
        try {
          result = super.next();
        } catch (IOException e) {
          throw new RuntimeException("Failed to read next input", e);
        }
      }
      return result;
    }
docs: The next element in the input. (Which may or may not have been peeked)
  
  @throws RuntimeException In the event that reading from input fails.
  @throws NoSuchElementException if there are no more elements in the input.