private void InitDelegates() { _updateEnumerator = () => { _subEnumerator = InnerEnumerator.Current.GetEnumerator(); if (_keepEmptyEnumerables) _updateEnumerator = () => _subEnumerator = _joinEnumerable.AppendValues(InnerEnumerator.Current).GetEnumerator(); else _updateEnumerator = () => _subEnumerator = new JoinSubEnumerator<T>(InnerEnumerator.Current, _joinEnumerable); }; _moveNext = () => { if (_subEnumerator == null && !_MoveNext()) return false; _moveNext = () => __MoveNext(); return __MoveNext(); }; }