public override object Execute(Reasoner ts, Unifier un, ITerm[] args) { CheckArguments(args); ITerm source = BeliefBase.ASelf; if (args.Length > 1) { source = args[1]; } bool before = false; if (args.Length > 2) { before = args[2].ToString().Equals("begin"); } if (args[0].IsList()) { foreach (ITerm t in (IListTerm)args[0]) { ts.GetAgent().GetPL().Add(Transform2Plan(t), source, before); } } else { ts.GetAgent().GetPL().Add(Transform2Plan(args[0]), source, before); } if (ts.GetAgent().GetPL().HasMetaEventPlans()) { ts.AddDesireListener(new Desire(ts)); } return(true); }