rem: expr = cp(data, id, expr, orig_env);
add: expr = cp(data, &id, expr, orig_env);
context: local_lift_expr(int argc, Scheme_Object *argv[]){  Scheme_Env *menv;  Scheme_Comp_Env *env, *orig_env;  Scheme_Object *id, *local_mark, *expr, *data, *vec, *id_sym;  Scheme_Lift_Capture_Proc cp;    expr = argv[0];  if (!SCHEME_STXP(expr))    scheme_wrong_type("syntax-local-lift-expression", "syntax", 0, argc, argv);  env = orig_env = scheme_current_thread->current_local_env;  local_mark = scheme_current_thread->current_local_mark;  if (!env)    scheme_raise_exn(MZEXN_FAIL_CONTRACT, 		     "syntax-local-lift-expression: not currently transforming");  while (env && !COMPILE_DATA(env)->lifts) {    env = env->next;  }  if (!env)    scheme_raise_exn(MZEXN_FAIL_CONTRACT, 		     "syntax-local-lift-expression: no lift target");    expr = scheme_add_remove_mark(expr, local_mark);  id_sym = scheme_intern_exact_parallel_symbol("lifted", 6);  id = scheme_datum_to_syntax(id_sym, scheme_false, scheme_false, 0, 0);  id = scheme_add_remove_mark(id, scheme_new_mark());  vec = COMPILE_DATA(env)->lifts;  cp = *(Scheme_Lift_Capture_Proc *)SCHEME_VEC_ELS(vec)[1];  data = SCHEME_VEC_ELS(vec)[2];  menv = scheme_current_thread->current_local_menv;  expr = scheme_stx_cert(expr, scheme_false, 			 (menv && menv->module) ? menv : NULL,			 scheme_current_thread->current_local_certs, 			 NULL);  expr = scheme_stx_activate_certs(expr);  expr = cp(data, id, expr, orig_env);  expr = scheme_make_pair(expr, SCHEME_VEC_ELS(vec)[0]);  SCHEME_VEC_ELS(vec)[0] = expr;  id = scheme_add_remove_mark(id, local_mark);  return id;}