Program: 58653
Project: 58653
Buggy source:
/** 
 * Function called any time a update is triggered external
 * @param
 */
@Override protected void reactOnExternalSelection(boolean scrollToSelection){
  if (bRenderGeneTree == true) {
    if (tree != null) {
      int iIndex;
      resetAllTreeSelections();
      Set<Integer> setMouseOverElements=contentSelectionManager.getElements(ESelectionType.MOUSE_OVER);
      for (      Integer iSelectedID : setMouseOverElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.MOUSE_OVER);
      }
      Set<Integer> setSelectionElements=contentSelectionManager.getElements(ESelectionType.SELECTION);
      for (      Integer iSelectedID : setSelectionElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.SELECTION);
      }
      setDisplayListDirty();
    }
  }
 else {
    if (tree != null) {
      int iIndex;
      resetAllTreeSelections();
      Set<Integer> setMouseOverElements=storageSelectionManager.getElements(ESelectionType.MOUSE_OVER);
      for (      Integer iSelectedID : setMouseOverElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.MOUSE_OVER);
      }
      Set<Integer> setSelectionElements=storageSelectionManager.getElements(ESelectionType.SELECTION);
      for (      Integer iSelectedID : setSelectionElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.SELECTION);
      }
      setDisplayListDirty();
    }
  }
}

Fixed version (ground truth):
/** 
 * Function called any time a update is triggered external
 * @param
 */
@Override protected void reactOnExternalSelection(boolean scrollToSelection){
  if (bRenderGeneTree == true) {
    if (tree != null) {
      int iIndex;
      resetAllTreeSelections();
      Set<Integer> setMouseOverElements=contentSelectionManager.getElements(ESelectionType.MOUSE_OVER);
      for (      Integer iSelectedID : setMouseOverElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.MOUSE_OVER);
      }
      Set<Integer> setSelectionElements=contentSelectionManager.getElements(ESelectionType.SELECTION);
      for (      Integer iSelectedID : setSelectionElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.SELECTION);
      }
    }
  }
 else {
    if (tree != null) {
      int iIndex;
      resetAllTreeSelections();
      Set<Integer> setMouseOverElements=storageSelectionManager.getElements(ESelectionType.MOUSE_OVER);
      for (      Integer iSelectedID : setMouseOverElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.MOUSE_OVER);
      }
      Set<Integer> setSelectionElements=storageSelectionManager.getElements(ESelectionType.SELECTION);
      for (      Integer iSelectedID : setSelectionElements) {
        iIndex=iSelectedID;
        if (tree.getNodeByNumber(iIndex) != null)         tree.getNodeByNumber(iIndex).setSelectionType(ESelectionType.SELECTION);
      }
    }
  }
}