code: public synchronized T next() {
  	if (current == null) {
  	    throw new NoSuchElementException();
  	}
  	T t = current.next();
          // Once an element has been drawn from the iterator, the current
          // iterator should be used for any subsequent remove call.
          if (toRemoveFrom != current)
              toRemoveFrom = current;
  	advance();
  	return t;
      }
docs: Returns the next element from some iterator.