def difference(other)
      (keys.to_set + other.keys).to_compact_hash do |k|
         mine = self[k]
         yours = other[k]
         [mine, yours] unless block_given? ? yield(k, mine, yours) : mine == yours
      end
    end
def difference(other)
      (keys.to_set + other.keys).to_compact_hash do |k|
         mine = self[k]
         yours = other[k]
         [mine, yours] unless block_given? ? yield(k, mine, yours) : mine == yours
      end
    end
Returns the difference between this Hasher and the other Hasher in a Hash of the form:

 _key_ => [_mine_, _theirs_]

 where:
 * _key_ is the key of association which differs
 * _mine_ is the value for _key_ in this hash
 * _theirs_ is the value for _key_ in the other hash

 @param [Hasher] other the Hasher to subtract
 @yield [key, v1, v2] the optional block which determines whether values differ (default is equality)
 @yieldparam key the key for which values are compared
 @yieldparam v1 the value for key from this Hasher
 @yieldparam v2 the value for key from the other Hasher
 @return [{Object => (Object,Object)}] a hash of the differences