code: function runNotifyEffects(inst, notifyProps, props, oldProps, hasPaths) {
    // Notify
    let fxs = inst[TYPES.NOTIFY];
    let notified;
    let id = dedupeId++;
    // Try normal notify effects; if none, fall back to try path notification
    for (let prop in notifyProps) {
      if (notifyProps[prop]) {
        if (fxs && runEffectsForProperty(inst, fxs, id, prop, props, oldProps, hasPaths)) {
          notified = true;
        } else if (hasPaths && notifyPath(inst, prop, props)) {
          notified = true;
        }
      }
    }
    // Flush host if we actually notified and host was batching
    // And the host has already initialized clients; this prevents
    // an issue with a host observing data changes before clients are ready.
    let host;
    if (notified && (host = inst.__dataHost) && host._invalidateProperties) {
      host._invalidateProperties();
    }
  }
docs: Runs "notify" effects for a set of changed properties.
  
  This method differs from the generic `runEffects` method in that it
  will dispatch path notification events in the case that the property
  changed was a path and the root property for that path didn't have a
  "notify" effect.  This is to maintain 1.0 behavior that did not require
  `notify: true` to ensure object sub-property notifications were
  sent.
  
  @param {!PropertyEffectsType} inst The instance with effects to run
  @param {Object} notifyProps Bag of properties to notify
  @param {Object} props Bag of current property changes
  @param {Object} oldProps Bag of previous values for changed properties
  @param {boolean} hasPaths True with `props` contains one or more paths
  @return {void}
  @private