constructor() {
      super();
      /**
       * When setting this to true, on initial render, no option will be selected.
       * It is advisable to override `_noSelectionTemplate` method in the select-invoker
       * to render some kind of placeholder initially
       */
      this.hasNoDefaultSelected = false;
      /**
       * Informs screen reader and affects keyboard navigation.
       * By default 'vertical'
       */
      this.orientation = 'vertical';
      /**
       * Will give first option active state when navigated to the next option from
       * last option.
       */
      this.rotateKeyboardNavigation = false;
      /**
       * When true, will synchronize activedescendant and selected element on
       * arrow key navigation.
       * This behavior can usually be seen on <select> on the Windows platform.
       * Note that this behavior cannot be used when multiple-choice is true.
       * See: https://www.w3.org/TR/wai-aria-practices/#kbd_selection_follows_focus
       */
      this.selectionFollowsFocus = false;
      /**
       * When false, a user can type on which the focus will jump to the matching option
       */
      this._noTypeAhead = false;
      /**
       * The pending char sequence that will set active list item
       * @type {number}
       * @protected
       */
      this._typeAheadTimeout = 1000;
      /**
       * @type {number | null}
       * @protected
       */
      this._listboxActiveDescendant = null;
      /** @private */
      this.__hasInitialSelectedFormElement = false;
      /**
       * @type {'fieldset' | 'child' | 'choice-group'}
       * @protected
       */
      this._repropagationRole = 'choice-group'; // configures FormControlMixin
      /**
       * When listbox is coupled to a textbox (in case we are dealing with a combobox),
       * spaces should not select an element (they need to be put in the textbox)
       * @protected
       */
      this._listboxReceivesNoFocus = false;

      /**
       * @type {string | string[] | undefined}
       * @protected
       */
      this._oldModelValue = undefined;

      /**
       * @type {EventListener}
       * @protected
       */
      this._listboxOnKeyDown = this._listboxOnKeyDown.bind(this);
      /**
       * @type {EventListener}
       * @protected
       */
      this._listboxOnClick = this._listboxOnClick.bind(this);
      /**
       * @type {EventListener}
       * @protected
       */
      this._listboxOnKeyUp = this._listboxOnKeyUp.bind(this);
      /**
       * @type {EventListener}
       * @protected
       */
      this._onChildActiveChanged = this._onChildActiveChanged.bind(this);
      /**
       * @type {EventListener}
       * @private
       */
      this.__proxyChildModelValueChanged = this.__proxyChildModelValueChanged.bind(this);
      /**
       * @type {EventListener}
       * @private
       */
      this.__preventScrollingWithArrowKeys = this.__preventScrollingWithArrowKeys.bind(this);
      /**
       * @type {string[]}
       * @private
       */
      this.__typedChars = [];
    }
@deprecated
This setter exists for backwards compatibility of single choice groups.
A setter api would be confusing for a multipleChoice group. Use `setCheckedIndex` instead.
@param {number|number[]} index