public object Evaluate(Context context, bool withvars = false)
{
object message = Process.Current.GetMessage();
foreach (var match in this.matches)
{
var newcontext = match.MakeContext(message, context);
if (newcontext != null)
return match.Evaluate(newcontext);
}
Process.Current.RejectMessage(message);
return null;
}