Program: 30166
Project: 30166
Buggy source:
public SelectBoxList(final FilteredSelectBox<T> selectBox){
  super(null,selectBox.style.scrollStyle);
  this.selectBox=selectBox;
  setOverscroll(false,false);
  setFadeScrollBars(false);
  setScrollingDisabled(true,false);
  list=new List<T>(selectBox.style.listStyle){
    @Override protected String toString(    T obj){
      return selectBox.toString(obj);
    }
  }
;
  list.setTouchable(Touchable.disabled);
  setActor(list);
  filterField=new TextField("String_Node_Str",selectBox.style.textFieldStyle);
  list.addListener(new ClickListener(){
    public void clicked(    InputEvent event,    float x,    float y){
      selectBox.selection.choose(list.getSelected());
      hide();
    }
    public boolean mouseMoved(    InputEvent event,    float x,    float y){
      list.setSelectedIndex(Math.min(selectBox.items.size - 1,(int)((list.getHeight() - y) / list.getItemHeight())));
      return true;
    }
  }
);
  addListener(new InputListener(){
    public void exit(    InputEvent event,    float x,    float y,    int pointer,    Actor toActor){
      if (toActor == null || !isAscendantOf(toActor))       list.getSelection().set(selectBox.getSelected());
    }
  }
);
  hideListener=new InputListener(){
    public boolean touchDown(    InputEvent event,    float x,    float y,    int pointer,    int button){
      Actor target=event.getTarget();
      if (isAscendantOf(target))       return false;
      list.getSelection().set(selectBox.getSelected());
      hide();
      return false;
    }
    public boolean keyDown(    InputEvent event,    int keycode){
      if (keycode == Keys.ESCAPE)       hide();
      return false;
    }
  }
;
  filterField.addListener(new InputListener(){
    public boolean keyUp(    InputEvent event,    int keycode){
      if (keycode == Keys.ENTER) {
        setSelected(list.getSelected());
        hideList();
        filterField.setCursorPosition(filterField.getText().length());
      }
 else       if (keycode == Keys.UP) {
        int idx=list.getSelectedIndex();
        if (idx > 0)         list.setSelectedIndex(idx - 1);
        return true;
      }
 else       if (keycode == Keys.DOWN) {
        int idx=list.getSelectedIndex();
        if (idx < list.getItems().size - 1)         list.setSelectedIndex(idx + 1);
        return true;
      }
 else {
        if (getStage() == null && list.getItems().size > 0) {
          showList();
        }
        filterItems(filterField.getText());
      }
      return false;
    }
  }
);
}

Fixed version (ground truth):
public SelectBoxList(final FilteredSelectBox<T> selectBox){
  super(null,selectBox.style.scrollStyle);
  this.selectBox=selectBox;
  setOverscroll(false,false);
  setFadeScrollBars(false);
  setScrollingDisabled(true,false);
  list=new List<T>(selectBox.style.listStyle){
    @Override protected String toString(    T obj){
      return selectBox.toString(obj);
    }
  }
;
  list.setTouchable(Touchable.disabled);
  setActor(list);
  filterField=new TextField("String_Node_Str",selectBox.style.textFieldStyle);
  list.addListener(new ClickListener(){
    public void clicked(    InputEvent event,    float x,    float y){
      selectBox.selection.choose(list.getSelected());
      hide();
    }
    public boolean mouseMoved(    InputEvent event,    float x,    float y){
      list.setSelectedIndex(Math.min(list.getItems().size - 1,(int)((list.getHeight() - y) / list.getItemHeight())));
      return true;
    }
  }
);
  addListener(new InputListener(){
    public void exit(    InputEvent event,    float x,    float y,    int pointer,    Actor toActor){
      if (toActor == null || !isAscendantOf(toActor))       list.getSelection().set(selectBox.getSelected());
    }
  }
);
  hideListener=new InputListener(){
    public boolean touchDown(    InputEvent event,    float x,    float y,    int pointer,    int button){
      Actor target=event.getTarget();
      if (isAscendantOf(target))       return false;
      list.getSelection().set(selectBox.getSelected());
      hide();
      return false;
    }
    public boolean keyDown(    InputEvent event,    int keycode){
      if (keycode == Keys.ESCAPE)       hide();
      return false;
    }
  }
;
  filterField.addListener(new InputListener(){
    public boolean keyUp(    InputEvent event,    int keycode){
      if (keycode == Keys.ENTER) {
        setSelected(list.getSelected());
        hideList();
        filterField.setCursorPosition(filterField.getText().length());
      }
 else       if (keycode == Keys.UP) {
        int idx=list.getSelectedIndex();
        if (idx > 0)         list.setSelectedIndex(idx - 1);
        return true;
      }
 else       if (keycode == Keys.DOWN) {
        int idx=list.getSelectedIndex();
        if (idx < list.getItems().size - 1)         list.setSelectedIndex(idx + 1);
        return true;
      }
 else {
        if (getStage() == null && list.getItems().size > 0) {
          showList();
        }
        filterItems(filterField.getText());
      }
      return false;
    }
  }
);
}