public Value eval(Env env, Expr []exprs) throws Throwable { Value []argValues = new Value[exprs.length]; Arg []args = getArgs();  for (int i = 0; i < exprs.length; i++) {  if (i < args.length && args[i].isReference()) argValues[i] = exprs[i].evalArg(env); else argValues[i] = exprs[i].eval(env); }  return eval(env, argValues); }
abstract public Value eval(Env env, Value []args);
  public Value eval(Env env, Expr []exprs)    throws Throwable  {    Value []argValues = new Value[exprs.length];    Arg []args = getArgs();    for (int i = 0; i < exprs.length; i++) {      // quercus/0d19      if (i < args.length && args[i].isReference())	argValues[i] = exprs[i].evalArg(env);      else	argValues[i] = exprs[i].eval(env);    }    return eval(env, argValues);  }