try { Value origObj = _objExpr.eval(env); Value obj = origObj.copy();
Value origObj = _objExpr.eval(env); Value obj = origObj.copy();
  public Value execute(Env env)    throws Throwable  {    try {      Value origObj = _objExpr.eval(env);      Value obj = origObj.copy();      if (_key == null && ! _isRef) {        for (Value value : obj.getValueArray(env)) {          env.setValue(_valueName, value);          Value result = _block.execute(env);          if (result == null || result instanceof ContinueValue) {          } else if (result instanceof BreakValue)            return null;          else            return result;        }        return null;      } else {        for (Value key : obj.getKeyArray()) {          if (_keyName != null)            env.setValue(_keyName, key);          if (_isRef) {            Value value = origObj.getRef(key);            env.setVar(_valueName, value);          } else {            Value value = obj.get(key).toValue();            env.setValue(_valueName, value);          }          Value result = _block.execute(env);          if (result == null || result instanceof ContinueValue) {          } else if (result instanceof BreakValue)            return null;          else            return result;        }      }    }    catch (Throwable t) {      rethrow(t);    }    return null;  }