public ATObject evalAndReturn(String input) {
   try {
     ATAbstractGrammar ptree = NATParser._INSTANCE_.base_parse(NATText.atValue(input));
     return ptree.meta_eval(ctx_);
   } catch (XParseError e) {
     fail("Parse error: " + e.getMessage());
   } catch (InterpreterException e) {
     e.printStackTrace();
     fail("Eval error: " + e.getMessage());
   }
   return null;
 }
 public ATObject evalInActor(String input) {
   try {
     ATAbstractGrammar ptree = NATParser._INSTANCE_.base_parse(NATText.atValue(input));
     return ELActor.currentActor().sync_event_eval(ptree);
   } catch (XParseError e) {
     fail("Parse error: " + e.getMessage());
   } catch (InterpreterException e) {
     e.printStackTrace();
     fail("Eval error: " + e.getMessage());
   }
   return null;
 }
 public void evalAndTestException(String input, Class interpreterExceptionClass) {
   try {
     ATAbstractGrammar ptree = NATParser._INSTANCE_.base_parse(NATText.atValue(input));
     ptree.meta_eval(ctx_);
     fail(
         "Expected an exception of type "
             + Evaluator.getSimpleName(
                 interpreterExceptionClass)); // test should throw an exception
   } catch (InterpreterException ex) {
     if (!interpreterExceptionClass.isInstance(ex)) {
       ex.printStackTrace();
       fail("Unexpected exception: " + ex.getMessage());
     }
   }
 }