internal RulesEngine(ConditionEvaluatorFactory evaluators, TimeMachine timeMachine)
            : this()
        {
            _evaluators = evaluators;

            _validators = new List<BaseElementValidator>
            {
                new IsElementActiveEvaluator(timeMachine),
            };
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="RulesEngine"/> class.
 /// </summary>
 /// <param name="evaluators">Functor to resolve all evaluators.</param>
 /// <example>
 /// This is an example of using the rules engine only one condition evaluator, which is the included example <see cref="BooleanCondition"/>.
 /// <code><![CDATA[
 ///    var rulesEngine =
 ///        new RulesEngine.RulesEngine(
 ///            new ConditionEvaluatorFactory(() => new List<IConditionEvaluator> { new BooleanCondition() }));
 /// ]]>
 /// </code>
 /// We can directly pass IEnumerable object to the  constructor:
 /// <code><![CDATA[
 ///    var rulesEngine =
 ///        new RulesEngine.RulesEngine(
 ///            new ConditionEvaluatorFactory(new List<IConditionEvaluator> { new BooleanCondition() }));
 /// ]]>
 /// </code>
 /// </example>
 public RulesEngine(ConditionEvaluatorFactory evaluators)
     : this(evaluators, new TimeMachine())
 {
 }