code: function registerElementPatch(_global) {
      if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {
          return;
      }
      var _registerElement = document.registerElement;
      var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];
      document.registerElement = function (name, opts) {
          if (opts && opts.prototype) {
              callbacks.forEach(function (callback) {
                  var source = 'Document.registerElement::' + callback;
                  var prototype = opts.prototype;
                  if (prototype.hasOwnProperty(callback)) {
                      var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback);
                      if (descriptor && descriptor.value) {
                          descriptor.value = wrapWithCurrentZone(descriptor.value, source);
                          _redefineProperty(opts.prototype, callback, descriptor);
                      }
                      else {
                          prototype[callback] = wrapWithCurrentZone(prototype[callback], source);
                      }
                  }
                  else if (prototype[callback]) {
                      prototype[callback] = wrapWithCurrentZone(prototype[callback], source);
                  }
              });
          }
          return _registerElement.call(document, name, opts);
      };
      attachOriginToPatched(document.registerElement, _registerElement);
  }
docs: @license
  Copyright Google Inc. All Rights Reserved.
  
  Use of this source code is governed by an MIT-style license that can be
  found in the LICENSE file at https://angular.io/license