anchor.diff:  /// Refreshes the list of suggestions based on the user input and what's in the
   /// cache.
   refreshAutoSuggest([e]) {
  +  // Don't refresh if the focus is not inside the drop down or the input
  +  // elements.
     if(document.activeElement.parent != dropDown
         && document.activeElement != activeInput) {
       return false;
     }
  +
  +  // Make sure the Drop down is visible.
     displayDropDown();
  +
  +  // If the key press is the down arrow (vs. typing a new letter) we move the
  +  // focus to the first element of the drop down and do not refresh.
     if(e != null && e is KeyboardEvent && e.keyCode == KeyCode.DOWN) {
       (dropDown.firstChild as LIElement).focus();
  -    // don't display errors for the issue.
  +    // don't display errors for the issue since moving the focus out of the
  +    // input may trigger on onChange event.
       querySelector("#issueError").style.display = "none";
       return false;
     }
  -  String input = activeInput.value;
  +
  +  String inputValue = activeInput.value;
   
     // User is typing the owner name.
  -  if(!input.contains("/")) {
  +  if(!inputValue.contains("/")) {
       // Filter owner based on prefix.
       List<String> matchingOwner = new List<String>()
  -        ..addAll(ownersList)
  -        ..retainWhere((String owner) => owner.startsWith(input));
  +        ..addAll(repositoriesList.keys)
  +        ..retainWhere((String owner) => owner.startsWith(inputValue));
       _setAutoSuggestList(owners: matchingOwner..sort());
   
     // User is typing the repo name.
  -  } else if(!input.contains("#")) {
  +  } else if(!inputValue.contains("#")) {
       // Filter repo based on prefix and if the repo has any issues.
  -    List<Repository> ownerRepositories = repositoriesList[input.split("/")[0]];
  +    List<Repository> ownerRepositories = repositoriesList[inputValue.split("/")[0]];
       if(ownerRepositories != null) {
  -      List<Repository> matchingRepos = new List<Repository>()
  +      List<Repository> matchingRepositories = new List<Repository>()
             ..addAll(ownerRepositories)
  -          ..retainWhere((Repository repo) => repo.fullName.startsWith(input)
  +          ..retainWhere((Repository repo) => repo.fullName.startsWith(inputValue)
                 && repo.hasIssues
                 && (repo.openIssuesCount > 0 || mode == REPO_MODE));
  -      _setAutoSuggestList(repositories: matchingRepos);
  +      _setAutoSuggestList(repositories: matchingRepositories);
       } else {
         dropDown.children.clear();
         stopAutoSuggest();
  
positive.code:   activeInput.value = dropDownItem.attributes["value"];
    activeInput.focus();
    e.stopImmediatePropagation();
    if (dropDownItem.attributes["finalValue"] == "true"){
      activeInput.dispatchEvent(new CustomEvent("change"));
    }
  
negative.code: /// Used to set auto-completion on Repositories.
  const Symbol REPO_MODE = #REPO;
  
  /// Cache of all repositories mapped by owners.
  Map<String, List<Repository>> repositoriesList =
      new Map<String, List<Repository>>();
  