       return false for _ of valuesByNamespace
       true
 
-    if isProcessing
-      return unless loopDetected() is true
-    isProcessing = true
+    if loops
+      return unless (loopDetected loops) is true
+    previousLoops = loops++
 
     # For each namespace.
     for namespace, values_ of valuesByNamespace

  values = Object.create null
  values.common = init

  isProcessing = false
  process = (event, items) ->

    # Values are grouped by namespace.

        else
          collection.touch (namespace.substr 1)

    loops = previousLoops

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