function flushOnChangesQueue() {
      try {
        if (!(--onChangesTtl)) {
          // We have hit the TTL limit so reset everything
          onChangesQueue = undefined;
          throw $compileMinErr('infchng', '{0} $onChanges() iterations reached. Aborting!\n', TTL);
        }
        // We must run this hook in an apply since the $$postDigest runs outside apply
        $rootScope.$apply(function() {
          var errors = [];
          for (var i = 0, ii = onChangesQueue.length; i < ii; ++i) {
            try {
              onChangesQueue[i]();
            } catch (e) {
              errors.push(e);
            }
          }
          // Reset the queue to trigger a new schedule next time there is a change
          onChangesQueue = undefined;
          if (errors.length) {
            throw errors;
          }
        });
      } finally {
        onChangesTtl++;
      }
    }
@ngdoc method
@name $compileProvider#cssClassDirectivesEnabled
@description

It indicates to the compiler
whether or not directives on element classes should be compiled.
Defaults to `true`.

Calling this function with false disables the compilation of directives
on element classes for the whole application.
This results in a compilation performance gain,
as the compiler doesn't have to check element classes when looking for directives.
This should however only be used if you are sure that no class directives are used in
the application (including any 3rd party directives).

@param {boolean} enabled `false` if the compiler may ignore directives on element classes
@returns {boolean|object} the current value (or `this` if called as a setter for chaining)