         for reactiveName, reactiveSpec of reactiveSpecByName
             @reactives[reactiveName] = do (reactiveName, reactiveSpec) => J.AutoVar(
                 =>
-                    if componentDebug then console.log _getDebugPrefix(@), "!#{reactiveName}()"
-                    _debugDepth += 1
+                    _pushDebugFlag reactiveSpec.debug ? componentSpec.debug
+                    if componentDebug
+                        console.log _getDebugPrefix(@), "!#{reactiveName}()"
+                        _debugDepth += 1
+
                     ret = reactiveSpec.val.call @
-                    if componentDebug then console.log _getDebugPrefix(), ret
-                    _debugDepth -= 1
+
+                    if componentDebug
+                        console.log _getDebugPrefix(), ret
+                        _debugDepth -= 1
+                    _popDebugFlag()
+
                     ret
                 (
                     if reactiveSpec.onChange? then (oldValue, newValue) =>

        for propName, propSpec of propSpecs
            @_props[propName] = new ReactiveVar @props[propName],
                propSpec.same ? J.util.equals
            @prop[propName] = do (propName) => =>
                ret = @_props[propName].get()
                if componentDebug then console.log _getDebugPrefix(@), "prop.#{propName}()", ret
                ret

        # Set up @reactives

                throw new Meteor.Error "Can't pass undefined to #{componentName}.#{stateFieldName}"
            else if value is undefined
                # Getter
                _pushDebugFlag stateFieldSpec.debug ? componentSpec.debug

                ret = @state[stateFieldName].get()

                if componentDebug
                    console.log _getDebugPrefix(@), "#{stateFieldName}()", ret
                _popDebugFlag()

                ret
            else
                # Setter
