third_party/polymer3/bower_components/polymer/lib/mixins/property-effects.js
function runNotifyEffect(inst, property, props, oldProps, info, hasPaths) {
  let rootProperty = hasPaths ? root$0(property) : property;
  let path = rootProperty != property ? property : null;
  let value = path ? get$0(inst, path) : inst.__data[property];
  if (path && value === undefined) {
    value = props[property];  // specifically for .splices
  }
  dispatchNotifyEvent(inst, info.eventName, value, path);
}
function runNotifyEffect(inst, property, props, oldProps, info, hasPaths) {
  let rootProperty = hasPaths ? root$0(property) : property;
  let path = rootProperty != property ? property : null;
  let value = path ? get$0(inst, path) : inst.__data[property];
  if (path && value === undefined) {
    value = props[property];  // specifically for .splices
  }
  dispatchNotifyEvent(inst, info.eventName, value, path);
}
function runNotifyEffect ( inst , property , props , oldProps , info , hasPaths ) { let rootProperty = hasPaths ? root$0 ( property ) : property ; let path = rootProperty != property ? property : null ; let value = path ? get$0 ( inst , path ) : inst . __data [ property ] ; if ( path && value === undefined ) { value = props [ property ] ; // specifically for .splices } dispatchNotifyEvent ( inst , info . eventName , value , path ) ; }
Implements the "notify" effect.

Dispatches a non-bubbling event named `info.eventName` on the instance
with a detail object containing the new `value`.

@param {!PropertyEffectsType} inst The instance the effect will be run on
@param {string} property Name of property
@param {Object} props Bag of current property changes
@param {Object} oldProps Bag of previous values for changed properties
@param {?} info Effect metadata
@param {boolean} hasPaths True with `props` contains one or more paths
@return {void}
@private
Implements the notify effect .