       @value = def unless keepLast
 
     @value isnt prev
-
-  watcher.generator
 
 #=====================================================================
 

    # Handles existing items.
    process 'enter', collection.getRaw()

  # Returns the watcher object.
  watcher

#=====================================================================


      (valuesByNamespace[namespace] ?= []).push value

    # For each namespace.
    for namespace, values_ of valuesByNamespace

      # Updates the value.
      value = values[namespace]
      ctx = {
        value: if value is undefined then init else value
      }
      changed = if event is 'enter'
        fn.call ctx, values_, []
      else
        fn.call ctx, [], values_

      # Notifies watchers unless it is known the value has not
      # changed.
      unless changed is false
        values[namespace] = ctx.value
        if namespace is 'common'
          collection.touch consumers
        else
          collection.touch (namespace.substr 1)

    isProcessing = false

  processOne = (event, item) ->
    process event, [item]
