docs: function (charCode, keyCode, nextValue, caretPosStart, caretPosEnd) {
  
                  // Before reacting to the controller report we check that the maxlength is not exceeded
                  // It is done here because the report is asynchronous and will programmatically set the
                  // value of the text input, thus bypassing maxlength attribute on text input
                  if (this.maxlength > 0 && nextValue.length > this.maxlength) {
                      return;
                  }
                  // Setting the Data Model value to entered Text if the free text is allowed PTR05245510
                  this._dataModel.value = this.freeText ? nextValue : null;
                  this._dataModel.text = nextValue;
                  // The timeout was moved from the _raiseReport method to here
                  // so that we never send an old report after having received a new key
                  // and so that it is possible to quickly cancel the display of suggestions when typing fast
                  if (this._typeTimout) {
                      clearTimeout(this._typeTimout);
                      this._typeTimout = null;
                  }
                  var controller = this, domEvent = ariaDomEvent;
  
                  if (keyCode == domEvent.KC_ARROW_DOWN && !nextValue && controller.expandButton) {
                      controller.toggleDropdown("", !!controller._listWidget);
                      return;
                  }
  
                  this._typeTimout = setTimeout(function () {
                      controller._typeTimout = null;
  
                      controller._pendingRequestNb += 1;
                      controller._resourcesHandler.getSuggestions(nextValue, {
                          fn : controller._suggestionsCallback,
                          scope : controller,
                          args : {
                              nextValue : nextValue,
                              triggerDropDown : true,
                              caretPosStart : caretPosStart,
                              caretPosEnd : caretPosEnd,
                              avoidChangingText : true
                          }
                      });
                  }, 10);
  
                  // return null as there is asynchrone handling
                  return null;
  
              }