third_party/polymer3/bower_components/polymer/lib/mixins/property-effects.js
function runComputedEffects(inst, changedProps, oldProps, hasPaths) {
  let computeEffects = inst[TYPES.COMPUTE];
  if (computeEffects) {
    let inputProps = changedProps;
    while (runEffects(inst, computeEffects, inputProps, oldProps, hasPaths)) {
      Object.assign(oldProps, inst.__dataOld);
      Object.assign(changedProps, inst.__dataPending);
      inputProps = inst.__dataPending;
      inst.__dataPending = null;
    }
  }
}
function runComputedEffects(inst, changedProps, oldProps, hasPaths) {
  let computeEffects = inst[TYPES.COMPUTE];
  if (computeEffects) {
    let inputProps = changedProps;
    while (runEffects(inst, computeEffects, inputProps, oldProps, hasPaths)) {
      Object.assign(oldProps, inst.__dataOld);
      Object.assign(changedProps, inst.__dataPending);
      inputProps = inst.__dataPending;
      inst.__dataPending = null;
    }
  }
}
function runComputedEffects ( inst , changedProps , oldProps , hasPaths ) { let computeEffects = inst [ TYPES . COMPUTE ] ; if ( computeEffects ) { let inputProps = changedProps ; while ( runEffects ( inst , computeEffects , inputProps , oldProps , hasPaths ) ) { Object . assign ( oldProps , inst . __dataOld ) ; Object . assign ( changedProps , inst . __dataPending ) ; inputProps = inst . __dataPending ; inst . __dataPending = null ; } } }
Runs "computed" effects for a set of changed properties.

This method differs from the generic `runEffects` method in that it
continues to run computed effects based on the output of each pass until
there are no more newly computed properties.  This ensures that all
properties that will be computed by the initial set of changes are
computed before other effects (binding propagation, observers, and notify)
run.

@param {!PropertyEffectsType} inst The instance the effect will be run on
@param {!Object} changedProps Bag of changed properties
@param {!Object} oldProps Bag of previous values for changed properties
@param {boolean} hasPaths True with `props` contains one or more paths
@return {void}
@private
Runs computed effects for a set of changed properties .