public EvalResult apply(Evaluator e, Continuation c, Value v) {
   if (v instanceof DynamicException) {
     return c.apply(v);
   } else {
     return c.apply(apply(v));
   }
 }
 /**
  * Marks a var as referenced, recursing into any values of this var that we skipped.
  *
  * @return True if this variable had not been referenced before.
  */
 private boolean markReferencedVar(Var var) {
   if (referenced.add(var)) {
     for (Continuation c : continuations.get(var)) {
       c.apply();
     }
     return true;
   }
   return false;
 }