Program: 58025
Project: 58025
Buggy source:
@Override public void display(GL2 gl){
  if (showDetailBrick) {
    ElementLayout spacingLayoutX=new ElementLayout("String_Node_Str");
    spacingLayoutX.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
    spacingLayoutX.setPixelSizeX(50);
    spacingLayoutX.setRatioSizeY(0);
    detailRow.clear();
    if (expandLeft) {
      detailRow.append(detailBrickLayout);
      detailRow.append(spacingLayoutX);
      detailRow.append(groupColumn);
      visBricks.switchToDetailModeRight(this);
    }
 else {
      detailRow.append(groupColumn);
      detailRow.append(spacingLayoutX);
      detailRow.append(detailBrickLayout);
      visBricks.switchToDetailModeLeft(this);
    }
    detailRow.updateSubLayout();
    visBricks.updateLayout();
    visBricks.updateConnectionLinesBetweenDimensionGroups();
    showDetailBrick=false;
    isDetailBrickShown=true;
  }
  if (hideDetailBrick || (isCollapsed && detailBrick != null)) {
    detailRow.clear();
    detailRow.append(groupColumn);
    if (detailBrick != null) {
      GeneralManager.get().getViewGLCanvasManager().unregisterGLView(detailBrick);
      detailBrick.unregisterEventListeners();
      detailBrick.destroy();
      detailBrick=null;
    }
    if (hideDetailBrick && expandLeft) {
      visBricks.switchToOverviewModeRight();
    }
    if (hideDetailBrick && !expandLeft) {
      visBricks.switchToOverviewModeLeft();
    }
    hideDetailBrick=false;
    isDetailBrickShown=false;
    detailRow.updateSubLayout();
    visBricks.updateLayout();
    visBricks.updateConnectionLinesBetweenDimensionGroups();
  }
  while (!uninitializedBricks.isEmpty()) {
    uninitializedBricks.poll().initRemote(gl,this,glMouseListener);
  }
  handleVerticalMoveDragging(gl);
  checkForHits(gl);
}

Fixed version (ground truth):
@Override public void display(GL2 gl){
  if (showDetailBrick) {
    ElementLayout spacingLayoutX=new ElementLayout("String_Node_Str");
    spacingLayoutX.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
    spacingLayoutX.setPixelSizeX(OVERVIEW_DETAIL_GAP_PIXEL);
    spacingLayoutX.setRatioSizeY(0);
    detailRow.clear();
    if (expandLeft) {
      detailRow.append(detailBrickLayout);
      detailRow.append(spacingLayoutX);
      detailRow.append(groupColumn);
      visBricks.switchToDetailModeRight(this);
    }
 else {
      detailRow.append(groupColumn);
      detailRow.append(spacingLayoutX);
      detailRow.append(detailBrickLayout);
      visBricks.switchToDetailModeLeft(this);
    }
    detailRow.updateSubLayout();
    visBricks.updateLayout();
    visBricks.updateConnectionLinesBetweenDimensionGroups();
    showDetailBrick=false;
    isDetailBrickShown=true;
  }
  if (hideDetailBrick || (isCollapsed && detailBrick != null)) {
    detailRow.clear();
    detailRow.append(groupColumn);
    if (detailBrick != null) {
      GeneralManager.get().getViewGLCanvasManager().unregisterGLView(detailBrick);
      detailBrick.unregisterEventListeners();
      detailBrick.destroy();
      detailBrick=null;
    }
    isDetailBrickShown=false;
    if (hideDetailBrick && expandLeft) {
      visBricks.switchToOverviewModeRight();
    }
    if (hideDetailBrick && !expandLeft) {
      visBricks.switchToOverviewModeLeft();
    }
    hideDetailBrick=false;
    detailRow.updateSubLayout();
    visBricks.updateLayout();
    visBricks.updateConnectionLinesBetweenDimensionGroups();
  }
  while (!uninitializedBricks.isEmpty()) {
    uninitializedBricks.poll().initRemote(gl,this,glMouseListener);
  }
  handleVerticalMoveDragging(gl);
  checkForHits(gl);
}