docs: function (options) {
        if (!this.isCommitted()) {
          if (!this.isCancelled() && hasChanges(this)) {
            var effectiveOptions = options || {};
            var binding = this._binding;
            var metaBinding = binding.meta();
  
            var previousBackingValue = null, previousBackingMeta = null;
            if (effectiveOptions.notify !== false) {
              previousBackingValue = getBackingValue(binding);
              previousBackingMeta = getBackingValue(metaBinding);
            }
  
            this._finishedUpdates = commitSilently(this);
            var affectedPaths = this._finishedUpdates.map(function (update) { return update.affectedPath; });
  
            if (effectiveOptions.notify !== false) {
              var filteredPaths = filterRedundantPaths(affectedPaths);
  
              var stateTransition = mkStateTransition(
                getBackingValue(binding), previousBackingValue, getBackingValue(metaBinding), previousBackingMeta
              );
  
              notifyGlobalListeners(binding, filteredPaths[0], stateTransition);
              filteredPaths.forEach(function (path) {
                notifyNonGlobalListeners(binding, path, stateTransition);
              });
            }
          }
  
          return this;
        } else {
          throw new Error('Morearty: transaction already committed');
        }
      }