示例#1
0
        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);
        }