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()