throws Throwable
  public Value execute(Env env)    throws Throwable  {    try {      Value testValue = _value.eval(env);      int len = _cases.length;      for (int i = 0; i < len; i++) {        Expr []values = _cases[i];        for (int j = 0; j < values.length; j++) {          Value caseValue = values[j].eval(env);          if (testValue.eq(caseValue)) {            Value retValue = _blocks[i].execute(env);            if (retValue instanceof BreakValue)              return null;            else              return retValue;          }        }      }      if (_defaultBlock != null) {        Value retValue = _defaultBlock.execute(env);        if (retValue instanceof BreakValue)          return null;        else          return retValue;      }    }    catch (Throwable t) {      rethrow(t);    }    return null;  }