public final V next() {
          Node<V> p;
        if ((p = next) == null) {
          throw new NoSuchElementException();
        }
          V v = p.val;
          lastReturned = p;
          advance();
          return v;
      }
public final V next()