docs: function (cfg, ctxt, lineNumber) {
              if (this.tagName) {
                  cfg.tagName = this.tagName;
              }
  
              var validCfg = ariaCoreJsonValidator.normalize({
                  json : cfg,
                  beanName : this.$cfgBean
              });
  
              // it's always a good idea to call the parent contructor as soon as possible
              this.$BindableWidget.constructor.apply(this, arguments);
  
              if (!validCfg) {
                  return makeUseless(this);
              }
  
              var id = cfg.id;
  
              /**
               * Id of the DOM element of this widget.
               * @type String
               * @protected
               */
              this._id = id ? this._context.$getId(id) : this._createDynamicId();
  
              /**
               * Reference of the DOM element with id this._id.
               * @type HTMLElement
               * @protected
               */
              this._domElt = null;
  
              /**
               * Delegate id used returned by aria.utils.Delegate
               * @type String
               * @private
               */
              this.__delegateId = null;
  
              /**
               * Array of event names which are not delegated and can only be handled through the fallback markup.
               * @type Array
               * @private
               */
              this.__delegateFallbackEvents = null;
  
              this._registerBindings();
              this._normalizeCallbacks();
          }