constructor(rootWebComponent, options) {
      if (!rootWebComponent.isUI5Element) {
        throw new Error("The root web component must be a UI5 Element instance");
      }
      this.rootWebComponent = rootWebComponent;
      this.rootWebComponent.addEventListener("keydown", this._onkeydown.bind(this));
      this.rootWebComponent._onComponentStateFinalized = () => {
        this._init();
      };
      if (typeof options.getItemsCallback !== "function") {
        throw new Error("getItemsCallback is required");
      }
      this._getItems = options.getItemsCallback;
      this._currentIndex = options.currentIndex || 0;
      this._rowSize = options.rowSize || 1;
      this._behavior = options.behavior || _ItemNavigationBehavior.default.Static;
      this._navigationMode = options.navigationMode || _NavigationMode.default.Auto;
      this._affectedPropertiesNames = options.affectedPropertiesNames || [];
      this._skipItemsSize = options.skipItemsSize || null;
    }
@param rootWebComponent the component to operate on (component that slots or contains within its shadow root the items the user navigates among)
@param {ItemNavigationOptions} options Object with configuration options:
 - currentIndex: the index of the item that will be initially selected (from which navigation will begin)
 - navigationMode (Auto|Horizontal|Vertical): whether the items are displayed horizontally (Horizontal), vertically (Vertical) or as a matrix (Auto) meaning the user can navigate in both directions (up/down and left/right)
 - rowSize: tells how many items per row there are when the items are not rendered as a flat list but rather as a matrix. Relevant for navigationMode=Auto
	- skipItemsSize: tells how many items upon PAGE_UP and PAGE_DOWN should be skipped to applying the focus on the next item
 - behavior (Static|Cycling): tells what to do when trying to navigate beyond the first and last items
   Static means that nothing happens if the user tries to navigate beyond the first/last item.
   Cycling means that when the user navigates beyond the last item they go to the first and vice versa.
 - getItemsCallback: function that, when called, returns an array with all items the user can navigate among
 - affectedPropertiesNames: a list of metadata properties on the root component which, upon user navigation, will be reassigned by address thus causing the root component to invalidate