# File lib/ruote/exp/fe_inc.rb, line 222
    def new_value(type, key, increment)

      if type == nil && m = PREFIX_REGEX.match(key)
        type = (m[1][0, 1] == 'f' ? :field : :var)
        key = m[2]
      end

      delta = increment.nil? ? lookup_val : increment

      if delta.nil? && @msg && @msg['action'] == 'reply'
        delta = h.applied_workitem['fields']['__result__']
      end

      ndelta = Ruote.narrow_to_number(delta || 1)
      ndelta = -ndelta if dec? && ndelta

      value = type == :var ?
        lookup_variable(key) :
        Ruote.lookup(h.applied_workitem['fields'], key)

      value = case value
        when NilClass then []
        when Array then value
        else [ value ]
      end if (name == 'push' || name == 'pop')

      pos = attribute(:position) || attribute(:pos)

      return ((value || 0) + ndelta) if ndelta && (not value.is_a?(Array))

      pos ||= 'tail'
      value ||= []

      return (pos == 'tail' ? value + [ delta ] : [ delta ] + value) unless dec?

      car, cdr = if delta != nil
        (value.delete(delta) != nil ) ? [ delta, value ] : [ nil, value ]
      elsif pos == 'tail'
        [ value[-1], value[0..-2] ]
      else
        [ value[0], value[1..-1] ]
      end

      to_v, to_f = determine_tos
      key = to_v ? "v:#{to_v}" : to_f

      [ key, car, cdr ]
    end