public virtual bool MoveNext() { if (current == null) { if (first == null) return false; current = first; return true; } if (current.Next == null) return false; current = current.Next; return true; }