throws Throwable
  public Value execute(Env env)    throws Throwable  {    Value origObj = _objExpr.eval(env);    Value obj = origObj.copy();    if (_key == null && ! _isRef) {      for (Value value : obj.getValueArray(env)) {	_value.evalAssign(env, 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 (_key != null)	  _key.evalAssign(env, key);	if (_isRef) {	  Value value = origObj.getRef(key);	  _value.evalAssign(env, value);	} else {	  Value value = obj.get(key).toValue();	  _value.evalAssign(env, value);	}	Value result = _block.execute(env);	if (result == null || result instanceof ContinueValue) {	} else if (result instanceof BreakValue)	  return null;	else	  return result;      }    }    return null;  }