     # Handles existing items.
     process 'enter', collection.getRaw()
 
-  # Returns the watcher object.
-  watcher
+  # Returns the generator.
+  ->
+    {key} = this
+
+    # Register this item has a consumer.
+    consumers[@key] = true
+
+    # Returns the value for this item if any or the common value.
+    namespace = "$#{key}"
+    if namespace of values
+      values[namespace]
+    else
+      values.common
 
 #=====================================================================
 

      @value = def unless keepLast

    @value isnt prev

  watcher.generator

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


  else
    $asFunction val

  # Method allowing the cleanup when the helper is no longer used.
  #cleanUp = -> # TODO: noop for now.

  # Keys of items using the current helper.
  consumers = Object.create null

  # Current values.
  values = Object.create null
  values.common = init

  isProcessing = false
  process = (event, items) ->
    throw new Error 'loop detected' if isProcessing
    isProcessing = true

    # Values are grouped by namespace.
    valuesByNamespace = Object.create null

