def un_set_variable(op, var, val, should_persist)

      result = if op == :set
        Ruote.set(h.variables, var, val)
      else # op == :unset
        Ruote.unset(h.variables, var)
      end

      if should_persist && r = try_persist # persist failed, have to retry

        self.h = r
        un_set_variable(op, var, val, true)

      else # success (even when should_persist == false)

        @context.storage.put_msg("variable_#{op}", 'var' => var, 'fei' => h.fei)
      end

      result
    end
def un_set_variable(op, var, val, should_persist)

      result = if op == :set
        Ruote.set(h.variables, var, val)
      else # op == :unset
        Ruote.unset(h.variables, var)
      end

      if should_persist && r = try_persist # persist failed, have to retry

        self.h = r
        un_set_variable(op, var, val, true)

      else # success (even when should_persist == false)

        @context.storage.put_msg("variable_#{op}", 'var' => var, 'fei' => h.fei)
      end

      result
    end
Sets (or unsets) the value of a local variable

 val should be nil in case of 'unset'.