docs: function (textEntry, callback) {
  
                  if (typesUtil.isString(textEntry) && textEntry.length >= this.threshold) {
                      textEntry = stringUtil.stripAccents(textEntry).toLowerCase();
  
                      var codeSuggestions = [], labelSuggestions = [], labelSuggestionsMultiWord = [];
                      var nbSuggestions = this._suggestions.length, textEntryLength = textEntry.length;
                      var multiWord = this._labelMatchAtWordBoundaries;
                      var codeMatch = this.codeMatch;
                      var index, suggestion;
  
                      for (index = 0; index < nbSuggestions; index++) {
                          suggestion = this._suggestions[index];
                          if (codeMatch && suggestion.code === textEntry) {
                              suggestion.original.exactMatch = true;
                              codeSuggestions.unshift(suggestion.original);
                          } else if (codeMatch && !this.codeExactMatch && suggestion.code.substring(0, textEntryLength) === textEntry) {
                              codeSuggestions.push(suggestion.original);
                              suggestion.original.exactMatch = false;
                          } else {
                              var boundaries = multiWord ? suggestion.wordBoundaries : [0];
                              for (var j = 0, len = boundaries.length, boundary; j < len; j++) {
                                  boundary = boundaries[j];
                                  if (suggestion.label.substring(boundary, boundary + textEntryLength) !== textEntry) {
                                      continue;
                                  }
  
                                  var exactMatch = suggestion.label === textEntry;
                                  var startsWithMatch = (boundary === 0);
  
                                  // matches starting at the beginning are preferred - will be displayed higher
                                  var suggestionsContainer = startsWithMatch
                                          ? labelSuggestions
                                          : labelSuggestionsMultiWord;
                                  suggestion.original.multiWordMatch = !startsWithMatch; // other highlight modifier
                                  suggestion.original.exactMatch = exactMatch;
                                  if (exactMatch) {
                                      suggestionsContainer.unshift(suggestion.original);
                                  } else {
                                      suggestionsContainer.push(suggestion.original);
                                  }
                                  break; // found a match starting from 'boundary', no need to search further
                              }
                          }
                      }
  
                      var suggestions = codeSuggestions.concat(labelSuggestions).concat(labelSuggestionsMultiWord);
                      this.$callback(callback, suggestions);
                  } else {
                      this.$callback(callback, null);
                  }
              }