Program: 69359
Project: 69359
Buggy source:
/** 
 * This dispatches component events...
 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,org.olat.core.gui.components.Component,org.olat.core.gui.control.Event)
 */
@Override public void event(UserRequest ureq,Component source,Event event){
  if (source == myContent) {
    if (event.getCommand().equals(COMMAND_SELECT)) {
      List<String> selectedEntries=new ArrayList<String>();
      String key=ureq.getParameter(AutoCompleterMapper.PARAM_KEY);
      if (key == null) {
        String searchValue=ureq.getParameter(VelocityRenderDecorator.getId(JSNAME_INPUTFIELD,myContent));
        if (searchValue == null) {
          logError("String_Node_Str",null);
          getWindowControl().setError(translate("String_Node_Str"));
          return;
        }
 else         if (searchValue.equals("String_Node_Str")) {
          if (!isEmptyAsReset()) {
            getWindowControl().setWarning(translate("String_Node_Str"));
          }
          fireEvent(ureq,new EmptyChosenEvent());
          return;
        }
 else         if (searchValue.equals("String_Node_Str") || searchValue.length() < 3) {
          getWindowControl().setWarning(translate("String_Node_Str"));
          return;
        }
        AutoCompleterListReceiver receiver=new AutoCompleterListReceiver("String_Node_Str",false);
        gprovider.getResult(searchValue,receiver);
        JSONArray result=receiver.getResult();
        if (result.length() > 0) {
          try {
            JSONObject object=result.getJSONObject(0);
            key=object.getString(AutoCompleterMapper.PARAM_KEY);
          }
 catch (          JSONException e) {
            logError("String_Node_Str",e);
            key="String_Node_Str";
          }
        }
 else {
          key="String_Node_Str";
        }
      }
      key=key.trim();
      if (!key.equals("String_Node_Str") && !key.equals(AUTOCOMPLETER_NO_RESULT)) {
        selectedEntries.add(key);
      }
 else       if (key.equals(AUTOCOMPLETER_NO_RESULT)) {
        return;
      }
      fireEvent(ureq,new EntriesChosenEvent(selectedEntries));
    }
  }
}

Fixed version (ground truth):
/** 
 * This dispatches component events...
 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,org.olat.core.gui.components.Component,org.olat.core.gui.control.Event)
 */
@Override public void event(UserRequest ureq,Component source,Event event){
  if (source == myContent) {
    if (COMMAND_SELECT.equals(event.getCommand())) {
      List<String> selectedEntries=new ArrayList<>();
      String key=ureq.getParameter(AutoCompleterMapper.PARAM_KEY);
      if (key == null) {
        String searchValue=ureq.getParameter(VelocityRenderDecorator.getId(JSNAME_INPUTFIELD,myContent));
        if (searchValue == null) {
          logError("String_Node_Str",null);
          getWindowControl().setError(translate("String_Node_Str"));
          return;
        }
 else         if (searchValue.equals("String_Node_Str")) {
          if (!isEmptyAsReset()) {
            getWindowControl().setWarning(translate("String_Node_Str"));
          }
          fireEvent(ureq,new EmptyChosenEvent());
          return;
        }
 else         if (searchValue.equals("String_Node_Str") || searchValue.length() < 3) {
          getWindowControl().setWarning(translate("String_Node_Str"));
          return;
        }
        AutoCompleterListReceiver receiver=new AutoCompleterListReceiver("String_Node_Str",false);
        gprovider.getResult(searchValue,receiver);
        JSONArray result=receiver.getResult();
        if (result.length() > 0) {
          try {
            JSONObject object=result.getJSONObject(0);
            key=object.getString(AutoCompleterMapper.PARAM_KEY);
          }
 catch (          JSONException e) {
            logError("String_Node_Str",e);
            key="String_Node_Str";
          }
        }
 else {
          key="String_Node_Str";
        }
      }
      key=key.trim();
      if (!key.equals("String_Node_Str") && !key.equals(AUTOCOMPLETER_NO_RESULT)) {
        selectedEntries.add(key);
      }
 else       if (key.equals(AUTOCOMPLETER_NO_RESULT)) {
        return;
      }
      fireEvent(ureq,new EntriesChosenEvent(selectedEntries));
    }
  }
}