public static Evaluator MakeMatcherContinue(double salience, Context context, IParsedPhrase input, List <IParsedPhrase> unmatched, IContinuation succ)
        {
            context.Map["$check"] = null;

            // Match this to first constituent, the continue for others
            Matcher matcheval = new Matcher(salience, input, unmatched, succ);

            ContinuationAppender appender = new ContinuationAppender(context, matcheval);

            Evaluator eval = new Evaluator(salience, ArgumentMode.SingleArgument, appender.AsIndex(0), appender.AsIndex(1), true);

            return(eval);
        }
        public override bool Produce(Context context, IContinuation succ, IFailure fail)
        {
            // Evaluate all children
            ContinueToCallAgent cont = CallAgentWrapper.MakeContinuation(ConstructSentence, succ, 100.0, 10, 10);

            ContinuationAppender appender = new ContinuationAppender(context, cont);

            Evaluator eval = new Evaluator(salience, ArgumentMode.ManyArguments, appender.AsIndex(0), appender.AsIndex(1), true);

            eval.Continue(context, fail);

            return(true);
        }