# File lib/ruote/exp/fe_set.rb, line 208
    def reply_to_parent(workitem)

      h.applied_workitem['fields'] = workitem['fields']
        # since set_vf and co work on h.applied_workitem...

      opts = { :escape => attribute(:escape) }
      compiled_atts = compile_atts(opts)

      kv = find_kv(compiled_atts)

      over = attribute(:override) || attribute(:over)
      unset = name == 'unset'

      h.variables = nil
        # the local scope is over,
        # variables set here will be set in the parent scope

      value = if tree_children.empty?
        lookup_val(opts)
      else
        h.applied_workitem['fields']['__result__']
      end
        #
        # a nil value is totally OK

      result = if var_key = has_attribute(:v, :var, :variable)

        set_v(attribute(var_key), value, :unset => unset, :override => over)

      elsif field_key = has_attribute(:f, :fld, :field)

        set_f(attribute(field_key), value, :unset => unset)

      elsif value == nil && kv

        kv << { :unset => unset, :override => over }

        set_vf(*kv)

      elsif kv

        set_vf(kv.first, value, :unset => unset, :override => over)

      else

        raise ArgumentError.new(
          "missing a variable or field target in #{tree.inspect}")
      end

      h.applied_workitem['fields']['__result__'] = result

      super(h.applied_workitem)
    end