protected virtual IAcceptInputTransition <T> ActivateRegexDFATransitionFromAccreditedSet(RangeSet <T> rangeSet)
        {
            if (rangeSet == null)
            {
                throw new ArgumentNullException(nameof(rangeSet));
            }

            return(BasicRegexFATransition <T> .Adapt(
                       new RangeSetRegexFATransition <T, BasicRegexDFAState <T> >(rangeSet)
                       ));
        }
        protected override IAcceptInputTransition <T> ActivateRegexNFATransitionFromRegexRange(RegexRange <T> regex)
        {
            if (regex == null)
            {
                throw new ArgumentNullException(nameof(regex));
            }

            if (this.AccreditedSet.Any(t => regex.Condition(t)))
            {
                return(BasicRegexFATransition <T> .Adapt(new RangeSetRegexFATransition <T, BasicRegexNFAState <T> >(new RangeSet <T>(new[] { (IRange <T>)regex }, this.rangeSet.RangeInfo))));
            }
            else
            {
                return(new BasicRegexFATransition <T>(t => false));
            }
        }