     @deferred_sets.push hash
     if replace
       @deferred_replace = true
-    set = (->
+    set = =>
       @deferred_set_timer = null
       new_hash = @current_hash
       @deferred_sets.each (m) ->

      @hashchange_event null
      @deferred_replace = false
      return
    ).bind(this)
    if !@deferred_set_timer?
      @deferred_set_timer = set.defer()
    return

    all_keys = all_keys.concat(new_hash.keys())
    all_keys = all_keys.uniq()
    changed_hash_keys = []
    all_keys.each (key) ->
      old_value = old_hash.get(key)
      new_value = new_hash.get(key)
      if old_value != new_value
        changed_hash_keys.push key
      return
    observers_to_call = []
    changed_hash_keys.each (key) =>
      observers = @observers.get(key)
      if !observers?
        return
      observers_to_call = observers_to_call.concat(observers)
      return
    universal_observers = @observers.get(null)
    if universal_observers?
      observers_to_call = observers_to_call.concat(universal_observers)
