-# External code can't access this, and so won't be able to directly construct a Tracker.Computation instance
+# Tracker.Computation constructor is private, so we are using this object as a guard.
+# External code cannot access this, and will not be able to directly construct a
+# Tracker.Computation instance.
 privateObject = {}
+
 nextId = 1
 afterFlushCallbacks = []
 queue = new Meteor._SynchronousQueue()

      !!Tracker._currentComputation.get()

class Tracker.Computation
  constructor: (f, @_parent, private) ->
    throw new Error "Tracker.Computation constructor is private; use Tracker.autorun" if private isnt privateObject

    @stopped = false
    @invalidated = false

  autorun: (f) ->
    throw new Error 'Tracker.autorun requires a function argument' unless typeof f is 'function'

    c = new Tracker.Computation f, Tracker.currentComputation, privateObject

    if Tracker.active
      Tracker.onInvalidate ->
