private TraversalBranch NextBranchFromSelector(TraversalContext metadata, BranchSelector selector, bool switchIfExhausted) { TraversalBranch result = selector.Next(metadata); if (result == null) { _selectors[_selectorIndex] = _emptySelector; if (switchIfExhausted) { result = NextSelector().next(metadata); if (result == null) { _selectors[_selectorIndex] = _emptySelector; } } } return(result); }
public AbstractSelectorOrderer(BranchSelector startSelector, BranchSelector endSelector) { _selectors = new BranchSelector[] { startSelector, endSelector }; _states[0] = InitialState(); _states[1] = InitialState(); }