docs: function (charCode, keyCode, nextValue, caretPosStart, caretPosEnd) {
  
                  var checkMaxOptionsFlag = this.maxOptions ? this.maxOptions > this.selectedSuggestions.length : true;
                  this._dataModel.value = this.freeText ? nextValue : null;
                  this._dataModel.text = nextValue;
                  if (this._typeTimeout) {
                      clearTimeout(this._typeTimeout);
                      this._typeTimeout = null;
                  }
                  var controller = this, domEvent = aria.DomEvent;
  
                  if (keyCode == domEvent.KC_ARROW_DOWN && !nextValue && controller.expandButton) {
                      controller.toggleDropdown("", !!controller._listWidget);
                      return;
                  }
  
                  this._typeTimeout = setTimeout(function () {
                      controller._typeTimeout = null;
                      controller._pendingRequestNb += 1;
                      if (checkMaxOptionsFlag) {
                          controller._resourcesHandler.getSuggestions(nextValue, {
                              fn : controller._suggestionsCallback,
                              scope : controller,
                              args : {
                                  nextValue : nextValue,
                                  triggerDropDown : true,
                                  caretPosStart : caretPosStart,
                                  caretPosEnd : caretPosEnd,
                                  avoidChangingText : true
                              }
                          });
                      }
                  }, 10);
                  return null;
  
              }