code: public Val exec(AstRoot ast, AstFunction scope) {
      sanity_check_refs(null);
  
      // Execute
      Env env = new Env(this);
      env._scope = scope;
      Val val = ast.exec(env);    // Execute
      assert env.sp() == 0;         // Stack balanced at end
      sanity_check_refs(val);
      return val;                 // Can return a frame, which may point to session-shared Vecs
    }
docs: Execute an AstRoot in the current Session with much assertion-checking
  @param ast Rapids expression to execute
  @param scope ?
  @return the result from the Rapids expression