Program: 53692
Project: 53692
Buggy source:
/** 
 * Update the state of a child node based on the keyboard selection of the specified   {@link BrowserCellList}. This method will open/close child  {@link TreeNode}s as needed.
 * @param cellList the CellList that changed state.
 * @param value the value to open
 * @param open true to open, false to close
 * @param fireEvents true to fireEvents
 * @return the open {@link TreeNode}, or null if not opened
 */
private <C>TreeNode updateChildState(BrowserCellList<C> cellList,boolean fireEvents){
  if (cellList.isDestroyed) {
    return null;
  }
  C newValue=cellList.getPresenter().getKeyboardSelectedRowValue();
  Object newKey=cellList.getValueKey(newValue);
  TreeNode closedNode=null;
  if (cellList.focusedKey != null && cellList.isFocusedOpen && !cellList.focusedKey.equals(newKey)) {
    closedNode=(treeNodes.size() > cellList.level + 1) ? treeNodes.get(cellList.level + 1) : null;
    trimToLevel(cellList.level);
  }
  TreeNode openNode=null;
  boolean justOpenedNode=false;
  if (newKey != null) {
    if (newKey.equals(cellList.focusedKey)) {
      openNode=cellList.isFocusedOpen ? treeNodes.get(cellList.level + 1) : null;
    }
 else {
      cellList.focusedKey=newKey;
      NodeInfo<?> childNodeInfo=isLeaf(newValue) ? null : getNodeInfo(newValue);
      if (childNodeInfo != null) {
        cellList.isFocusedOpen=true;
        justOpenedNode=true;
        openNode=appendTreeNode(childNodeInfo,newValue);
      }
    }
  }
  if (fireEvents) {
    if (closedNode != null) {
      CloseEvent.fire(this,closedNode);
    }
    if (openNode != null && justOpenedNode) {
      OpenEvent.fire(this,openNode);
    }
  }
  return (openNode == null || openNode.isDestroyed()) ? null : openNode;
}

Fixed version (ground truth):
/** 
 * Update the state of a child node based on the keyboard selection of the specified   {@link BrowserCellList}. This method will open/close child  {@link TreeNode}s as needed.
 * @param cellList the CellList that changed state.
 * @param fireEvents true to fireEvents
 * @return the open {@link TreeNode}, or null if not opened
 */
private <C>TreeNode updateChildState(BrowserCellList<C> cellList,boolean fireEvents){
  if (cellList.isDestroyed) {
    return null;
  }
  C newValue=cellList.getPresenter().getKeyboardSelectedRowValue();
  Object newKey=cellList.getValueKey(newValue);
  TreeNode closedNode=null;
  if (cellList.focusedKey != null && cellList.isFocusedOpen && !cellList.focusedKey.equals(newKey)) {
    closedNode=(treeNodes.size() > cellList.level + 1) ? treeNodes.get(cellList.level + 1) : null;
    trimToLevel(cellList.level);
  }
  TreeNode openNode=null;
  boolean justOpenedNode=false;
  if (newKey != null) {
    if (newKey.equals(cellList.focusedKey)) {
      openNode=cellList.isFocusedOpen ? treeNodes.get(cellList.level + 1) : null;
    }
 else {
      if (KeyboardSelectionPolicy.BOUND_TO_SELECTION == getKeyboardSelectionPolicy()) {
        cellList.setSelectedValue(newValue);
      }
      cellList.focusedKey=newKey;
      NodeInfo<?> childNodeInfo=isLeaf(newValue) ? null : getNodeInfo(newValue);
      if (childNodeInfo != null) {
        cellList.isFocusedOpen=true;
        justOpenedNode=true;
        openNode=appendTreeNode(childNodeInfo,newValue);
      }
    }
  }
  if (fireEvents) {
    if (closedNode != null) {
      CloseEvent.fire(this,closedNode);
    }
    if (openNode != null && justOpenedNode) {
      OpenEvent.fire(this,openNode);
    }
  }
  return (openNode == null || openNode.isDestroyed()) ? null : openNode;
}