lib/volt/watch.rb
def on_change_in(*args, except: nil, &block)
      args.each do |arg|
        ensure_reactive(arg)
        traverse(arg, :shallow, except, args.size > 1 || block.arity == 3, block)
      end
    end
def on_change_in(*args, except: nil, &block)
      args.each do |arg|
        ensure_reactive(arg)
        traverse(arg, :shallow, except, args.size > 1 || block.arity == 3, block)
      end
    end
Adds a watch for a shallow change in the contents
 (attributes, elements, or key-value pairs) of one or
 more reactive objects.

 Reactive objects are any of:
   Volt::Model
   Volt::ArrayModel
   Volt::ReactiveArray
   Volt::ReactiveHash

 When any value in the model, array or hash changes then
 the given block will be called.

 The values of a Volt::Model are its attributes.

 The values of a Volt::ArrayModel or Volt::ReactiveArray are its elements.

 The values of an Volt::ReactiveHash are its key-value pairs.

 If the args contain more than one object or the arity of the
 block, then the block will be passed the object, the
 locus and the value. If only one object is given and the
 block arity is less than 3, then the locus and the value
 will be passed to the block.

 The locus is:
   the field name for a Volt::Model
   the integer index or :size for a Volt::ArrayModel
   the integer index or :size for a Volt::ReactiveArray
   the key for Volt::ReactiveHash

 For example:

 ```
   on_change_in(user) do |object, attr, value|
     puts "#{object}.#{attr} => #{value}"
   end
 ```
 or

 ```
   on_change_in(user) do |attr|
     puts "user.#{attr} => #{user.get(attr)}"
   end
 ```
 or

 ```
   on_change_in(page._items) do |index, value|
     puts "page[#{index}] => #{item}"
   end
 ```
 or

 ```
   on_change_in(page._items) do |index|
     puts "page[#{index}] => #{page._items[index]}"
   end
 ```
 or

 ```
   on_change_in(store.dictionary) do |key, entry|
     puts "dictionary[#{key}] => #{entry}"
   end
 ```
 or
 ```
   on_change_in(store.dictionary) do |key|
     puts "dictionary[#{key}] => #{store.dictionary[key]}"
   end
 ```