docs: function dynamicWatcher (expr, notifierKeys) {
      if (expr.$$watchDelegate.wrapped) {
        return expr.$$watchDelegate;
      }
  
      function setupListeners (scope, cb) {
        notifierKeys.forEach(function (nk) {
          scope.$on('$$rebind::' + nk, cb);
        });
      }
  
      function wrapDelegate (watchDelegate, scope, listener, objectEquality, parsedExpression) {
        var delegateCall = watchDelegate.bind(this, scope, listener, objectEquality, parsedExpression);
        setupListeners(scope, delegateCall);
        return delegateCall();
      }
  
      var delegate     = wrapDelegate.bind(this, expr.$$watchDelegate);
      delegate.wrapped = true;
  
      return delegate;
    }