updateMixins(newMixins, oldMixins) {
    var newMixinIdArray = ANode.newMixinIdArray;
    var oldMixinIdArray = ANode.oldMixinIdArray;
    var mixinIds = ANode.mixinIds;
    var i;
    var newMixinIds;
    var oldMixinIds;
    newMixinIdArray.length = 0;
    oldMixinIdArray.length = 0;
    newMixinIds = newMixins ? _utils_index_js__WEBPACK_IMPORTED_MODULE_0__.split(newMixins.trim(), /\s+/) : newMixinIdArray;
    oldMixinIds = oldMixins ? _utils_index_js__WEBPACK_IMPORTED_MODULE_0__.split(oldMixins.trim(), /\s+/) : oldMixinIdArray;
    mixinIds.newMixinIds = newMixinIds;
    mixinIds.oldMixinIds = oldMixinIds;

    // Unregister old mixins.
    for (i = 0; i < oldMixinIds.length; i++) {
      if (newMixinIds.indexOf(oldMixinIds[i]) === -1) {
        this.unregisterMixin(oldMixinIds[i]);
      }
    }

    // Register new mixins.
    this.computedMixinStr = '';
    this.mixinEls.length = 0;
    for (i = 0; i < newMixinIds.length; i++) {
      this.registerMixin(newMixinIds[i]);
    }

    // Update DOM. Keep track of `computedMixinStr` to not recurse back here after
    // update.
    if (this.computedMixinStr) {
      this.computedMixinStr = this.computedMixinStr.trim();
      window.HTMLElement.prototype.setAttribute.call(this, 'mixin', this.computedMixinStr);
    }
    if (newMixinIds.length === 0) {
      window.HTMLElement.prototype.removeAttribute.call(this, 'mixin');
    }
    return mixinIds;
  }
Unregister old mixins and listeners.
Register new mixins and listeners.
Registering means to update `this.mixinEls` with listeners.