Program: 32487
Project: 32487
Buggy source:
/** 
 * If <code>strict</code> is <tt>false</tt>, the user can specify values not appearing within the ComboBoxModel. If it is <tt>true</tt> each keystroke must continue to match some value in the ComboBoxModel or it will be discarded. <p>Note: When strict mode is enabled, all user input is corrected to the case of the autocompletion term, regardless of the correctsCase setting.
 * @see #setCorrectsCase(boolean)
 * @throws IllegalStateException if this method is called from any Threadother than the Swing Event Dispatch Thread
 */
public void setStrict(boolean strict){
  checkAccessThread();
  if (this.strict == strict)   return;
  this.strict=strict;
  if (strict) {
    final String currentText=comboBoxEditorComponent.getText();
    Object currentItem=findAutoCompleteTerm(currentText);
    String currentItemText=convertToString(currentItem);
    boolean itemMatches=currentItem == comboBox.getSelectedItem();
    boolean textMatches=GlazedListsImpl.equal(currentItemText,currentText);
    if (currentItem == null && !allItemsUnfiltered.isEmpty()) {
      currentItem=allItemsUnfiltered.get(0);
      currentItemText=convertToString(currentItem);
      itemMatches=currentItem == comboBox.getSelectedItem();
      textMatches=GlazedListsImpl.equal(currentItemText,currentText);
    }
    applyFilter("String_Node_Str");
    doNotPostProcessDocumentChanges=true;
    try {
      if (!textMatches)       comboBoxEditorComponent.setText(currentItemText);
      if (!itemMatches)       comboBox.setSelectedItem(currentItem);
    }
  finally {
      doNotPostProcessDocumentChanges=false;
    }
  }
}

Fixed version (ground truth):
/** 
 * If <code>strict</code> is <tt>false</tt>, the user can specify values not appearing within the ComboBoxModel. If it is <tt>true</tt> each keystroke must continue to match some value in the ComboBoxModel or it will be discarded. <p>Note: When strict mode is enabled, all user input is corrected to the case of the autocompletion term, regardless of the correctsCase setting.
 * @see #setCorrectsCase(boolean)
 * @throws IllegalStateException if this method is called from any Threadother than the Swing Event Dispatch Thread
 */
public void setStrict(boolean strict){
  checkAccessThread();
  if (this.strict == strict)   return;
  this.strict=strict;
  if (strict) {
    final String currentText=comboBoxEditorComponent.getText();
    Object currentItem=findAutoCompleteTerm(currentText);
    String currentItemText=convertToString(currentItem);
    boolean itemMatches=currentItem == comboBox.getSelectedItem();
    boolean textMatches=GlazedListsImpl.equal(currentItemText,currentText);
    if (currentItem == NOT_FOUND && !allItemsUnfiltered.isEmpty()) {
      currentItem=allItemsUnfiltered.get(0);
      currentItemText=convertToString(currentItem);
      itemMatches=currentItem == comboBox.getSelectedItem();
      textMatches=GlazedListsImpl.equal(currentItemText,currentText);
    }
    applyFilter("String_Node_Str");
    doNotPostProcessDocumentChanges=true;
    try {
      if (!textMatches)       comboBoxEditorComponent.setText(currentItemText);
      if (!itemMatches || comboBox.getSelectedIndex() == -1)       comboBox.setSelectedItem(currentItem);
    }
  finally {
      doNotPostProcessDocumentChanges=false;
    }
  }
}