Program: 57991
Project: 57991
Buggy source:
@Override public void display(GL2 gl){
  handleHorizontalMoveDragging(gl);
  if (isLayoutDirty) {
    isLayoutDirty=false;
    centerLayoutManager.updateLayout();
    float minWidth=parentGLCanvas.getPixelGLConverter().getGLWidthForPixelWidth(DIMENSION_GROUP_SPACING_MIN_PIXEL_WIDTH);
    for (    ElementLayout layout : centerRowLayout) {
      if (!(layout.getRenderer() instanceof DimensionGroupSpacingRenderer))       continue;
      if (resizeNecessary)       break;
      if (layout.getSizeScaledX() < minWidth - 0.01f) {
        resizeNecessary=true;
        break;
      }
    }
  }
  if (resizeNecessary) {
    int size=centerRowLayout.size();
    if (size >= 3) {
      if (lastResizeDirectionWasToLeft) {
        dimensionGroupManager.setCenterGroupStartIndex(dimensionGroupManager.getCenterGroupStartIndex() + 1);
        float width=centerRowLayout.getElements().get(0).getSizeScaledX() + centerRowLayout.getElements().get(1).getSizeScaledX() + centerRowLayout.getElements().get(2).getSizeScaledX();
        centerRowLayout.remove(0);
        centerRowLayout.remove(0);
        leftDimensionGroupSpacing=centerRowLayout.getElements().get(0);
        leftDimensionGroupSpacing.setAbsoluteSizeX(width);
        ((DimensionGroupSpacingRenderer)leftDimensionGroupSpacing.getRenderer()).setLeftDimGroup(null);
        initLeftLayout();
      }
 else {
        dimensionGroupManager.setRightGroupStartIndex(dimensionGroupManager.getRightGroupStartIndex() - 1);
        float width=centerRowLayout.getElements().get(size - 1).getSizeScaledX() + centerRowLayout.getElements().get(size - 2).getSizeScaledX() + centerRowLayout.getElements().get(size - 3).getSizeScaledX();
        centerRowLayout.remove(centerRowLayout.size() - 1);
        centerRowLayout.remove(centerRowLayout.size() - 1);
        rightDimensionGroupSpacing=centerRowLayout.getElements().get(centerRowLayout.size() - 1);
        rightDimensionGroupSpacing.setGrabX(true);
        ((DimensionGroupSpacingRenderer)rightDimensionGroupSpacing.getRenderer()).setRightDimGroup(null);
        initRightLayout();
      }
    }
    centerLayoutManager.updateLayout();
    resizeNecessary=false;
  }
  for (  DimensionGroup dimensionGroup : dimensionGroupManager.getDimensionGroups()) {
    dimensionGroup.display(gl);
  }
  if (!isLeftDetailShown && !isRightDetailShown) {
    renderArch(gl);
  }
  if (!isLeftDetailShown && !isRightDetailShown) {
    leftLayoutManager.render(gl);
  }
  gl.glTranslatef(archInnerWidth,0,0);
  centerLayoutManager.render(gl);
  gl.glTranslatef(-archInnerWidth,0,0);
  if (!isLeftDetailShown && !isRightDetailShown) {
    float rightArchStand=(1 - ARCH_STAND_WIDTH_PERCENT) * viewFrustum.getWidth();
    gl.glTranslatef(rightArchStand,0,0);
    rightLayoutManager.render(gl);
    gl.glTranslatef(-rightArchStand,0,0);
  }
  dragAndDropController.handleDragging(gl,glMouseListener);
}

Fixed version (ground truth):
@Override public void display(GL2 gl){
  handleHorizontalMoveDragging(gl);
  if (isLayoutDirty) {
    isLayoutDirty=false;
    centerLayoutManager.updateLayout();
    float minWidth=parentGLCanvas.getPixelGLConverter().getGLWidthForPixelWidth(DIMENSION_GROUP_SPACING_MIN_PIXEL_WIDTH);
    for (    ElementLayout layout : centerRowLayout) {
      if (!(layout.getRenderer() instanceof DimensionGroupSpacingRenderer))       continue;
      if (resizeNecessary)       break;
      if (layout.getSizeScaledX() < minWidth - 0.01f) {
        resizeNecessary=true;
        break;
      }
    }
  }
  if (resizeNecessary) {
    int size=centerRowLayout.size();
    if (size >= 3) {
      if (lastResizeDirectionWasToLeft) {
        dimensionGroupManager.setCenterGroupStartIndex(dimensionGroupManager.getCenterGroupStartIndex() + 1);
        float width=centerRowLayout.getElements().get(0).getSizeScaledX() + centerRowLayout.getElements().get(1).getSizeScaledX() + centerRowLayout.getElements().get(2).getSizeScaledX();
        centerRowLayout.remove(0);
        centerRowLayout.remove(0);
        leftDimensionGroupSpacing=centerRowLayout.getElements().get(0);
        leftDimensionGroupSpacing.setAbsoluteSizeX(width);
        ((DimensionGroupSpacingRenderer)leftDimensionGroupSpacing.getRenderer()).setLeftDimGroup(null);
        initLeftLayout();
      }
 else {
        dimensionGroupManager.setRightGroupStartIndex(dimensionGroupManager.getRightGroupStartIndex() - 1);
        float width=centerRowLayout.getElements().get(size - 1).getSizeScaledX() + centerRowLayout.getElements().get(size - 2).getSizeScaledX() + centerRowLayout.getElements().get(size - 3).getSizeScaledX();
        centerRowLayout.remove(centerRowLayout.size() - 1);
        centerRowLayout.remove(centerRowLayout.size() - 1);
        rightDimensionGroupSpacing=centerRowLayout.getElements().get(centerRowLayout.size() - 1);
        rightDimensionGroupSpacing.setGrabX(true);
        ((DimensionGroupSpacingRenderer)rightDimensionGroupSpacing.getRenderer()).setRightDimGroup(null);
        initRightLayout();
      }
    }
    centerLayoutManager.updateLayout();
    resizeNecessary=false;
  }
  if (isConnectionLinesDirty)   performConnectionLinesUpdate();
  for (  DimensionGroup dimensionGroup : dimensionGroupManager.getDimensionGroups()) {
    dimensionGroup.display(gl);
  }
  if (!isLeftDetailShown && !isRightDetailShown) {
    renderArch(gl);
  }
  if (!isLeftDetailShown && !isRightDetailShown) {
    leftLayoutManager.render(gl);
  }
  gl.glTranslatef(archInnerWidth,0,0);
  centerLayoutManager.render(gl);
  gl.glTranslatef(-archInnerWidth,0,0);
  if (!isLeftDetailShown && !isRightDetailShown) {
    float rightArchStand=(1 - ARCH_STAND_WIDTH_PERCENT) * viewFrustum.getWidth();
    gl.glTranslatef(rightArchStand,0,0);
    rightLayoutManager.render(gl);
    gl.glTranslatef(-rightArchStand,0,0);
  }
  dragAndDropController.handleDragging(gl,glMouseListener);
}