   values = Object.create null
   values.common = init
 
-  isProcessing = false
+  # The number of nested processing for this watcher is counted to
+  # avoid an infinite loop.
+  loops = 0
+
   process = (event, items) ->
 
     # Values are grouped by namespace.

        else
          collection.touch (namespace.substr 1)

    isProcessing = false

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

      return false for _ of valuesByNamespace
      true

    if loops
      return unless (loopDetected loops) is true
    previousLoops = loops++

    # For each namespace.
    for namespace, values_ of valuesByNamespace
