constructor() {
      super();
      const ctor = this.constructor;
      this._changedState = []; // Filled on each invalidation, cleared on re-render (used for debugging)
      this._suppressInvalidation = true; // A flag telling whether all invalidations should be ignored. Initialized with "true" because a UI5Element can not be invalidated until it is rendered for the first time
      this._inDOM = false; // A flag telling whether the UI5Element is currently in the DOM tree of the document or not
      this._fullyConnected = false; // A flag telling whether the UI5Element's onEnterDOM hook was called (since it's possible to have the element removed from DOM before that)
      this._childChangeListeners = new Map(); // used to store lazy listeners per slot for the child change event of every child inside that slot
      this._slotChangeListeners = new Map(); // used to store lazy listeners per slot for the slotchange event of all slot children inside that slot
      this._eventProvider = new _EventProvider.default(); // used by parent components for listening to changes to child components
      let deferredResolve;
      this._domRefReadyPromise = new Promise(resolve => {
        deferredResolve = resolve;
      });
      this._domRefReadyPromise._deferredResolve = deferredResolve;
      this._doNotSyncAttributes = new Set(); // attributes that are excluded from attributeChangedCallback synchronization
      this._state = {
        ...ctor.getMetadata().getInitialState()
      };
      this._upgradeAllProperties();
      if (ctor._needsShadowDOM()) {
        this.attachShadow({
          mode: "open"
        });
      }
    }
Base class for all UI5 Web Components

@class
@constructor
@author SAP SE
@alias sap.ui.webc.base.UI5Element
@extends HTMLElement
@public