# File lib/ruote/exp/fe_set.rb, line 92
    def apply

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

      value = lookup_val(opts)
        # a nil value is totally OK

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

        set_v(attribute(var_key), value)

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

        set_f(attribute(field_key), value)

      elsif value == nil && kv = expand_atts(opts).find { |k, v| k != 'escape' }

        set_vf(*kv)

      else

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

      reply_to_parent(h.applied_workitem)
    end