public override bool Visit <T, TFact>(AddFactConsequence <T, TFact> consequence,
                                              Func <SemanticVisitor, bool> next)
        {
            _conditionCompiler.MatchJoinNode <T>(joinNode =>
            {
                AddFactNode <T, TFact> node = _configurator.AddFact(consequence.FactFactory);
                joinNode.AddActivation(node);
            });

            return(base.Visit(consequence, next));
        }
        public override bool Visit <T, TFact>(AddFactNode <T, TFact> node, Func <RuntimeVisitor, bool> next)
        {
            _current = _vertices.Get(node.Id,
                                     id =>
                                     new Vertex(typeof(AddFactNode <,>), typeof(TFact),
                                                typeof(T).Tokens() + " \x279C " + typeof(TFact).GetShortName()));

            if (_stack.Count > 0)
            {
                _edges.Add(new Edge(_stack.Peek(), _current, _current.TargetType.Name));
            }

            return(base.Visit(node, next));
        }
        public override bool Visit <T, TFact>(AddFactNode <T, TFact> node, Func <RuntimeVisitor, bool> next)
        {
            Append("AddFactProductionNode[{0}] => {1}", Tokens <T>(), typeof(TFact));

            return(base.Visit(node, next));
        }
 public virtual bool Visit <T, TFact>(AddFactNode <T, TFact> node, Func <RuntimeVisitor, bool> next)
     where T : class
     where TFact : class
 {
     return(next(this));
 }