Program: 58055
Project: 58055
Buggy source:
private void initLayoutCenter(){
  archSideThickness=viewFrustum.getWidth() * ARCH_STAND_WIDTH_PERCENT;
  archInnerWidth=viewFrustum.getWidth() * (ARCH_STAND_WIDTH_PERCENT + 0.024f);
  archBottomY=viewFrustum.getHeight() * ARCH_BOTTOM_PERCENT;
  archHeight=parentGLCanvas.getPixelGLConverter().getGLHeightForPixelHeight(ARCH_PIXEL_HEIGHT);
  archTopY=archBottomY + archHeight;
  float centerLayoutWidth=viewFrustum.getWidth() - 2 * (archInnerWidth);
  centerRowLayout=new Row("String_Node_Str");
  centerRowLayout.setFrameColor(1,1,0,1);
  ElementLayout dimensionGroupSpacing=new ElementLayout("String_Node_Str");
  DimensionGroupSpacingRenderer dimensionGroupSpacingRenderer=new DimensionGroupSpacingRenderer(null,connectionRenderer,null,dimensionGroupManager.getDimensionGroups().get(dimensionGroupManager.getCenterGroupStartIndex()));
  dimensionGroupSpacing.setRenderer(dimensionGroupSpacingRenderer);
  dimensionGroupSpacingRenderer.setLineLength(archHeight);
  dimensionGroupSpacing.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
  dimensionGroupSpacing.setPixelSizeX(70);
  centerRowLayout.append(dimensionGroupSpacing);
  for (int dimensionGroupIndex=dimensionGroupManager.getCenterGroupStartIndex(); dimensionGroupIndex < dimensionGroupManager.getRightGroupStartIndex(); dimensionGroupIndex++) {
    DimensionGroup group=dimensionGroupManager.getDimensionGroups().get(dimensionGroupIndex);
    group.setCollapsed(false);
    group.setArchHeight(ARCH_PIXEL_HEIGHT);
    centerRowLayout.append(group.getLayout());
    if (dimensionGroupIndex != dimensionGroupManager.getRightGroupStartIndex() - 1) {
      dimensionGroupSpacing=new ElementLayout("String_Node_Str");
      dimensionGroupSpacingRenderer=new DimensionGroupSpacingRenderer(relationAnalyzer,connectionRenderer,group,dimensionGroupManager.getDimensionGroups().get(dimensionGroupIndex + 1));
      dimensionGroupSpacing.grabX();
    }
 else {
      dimensionGroupSpacing=new ElementLayout("String_Node_Str");
      dimensionGroupSpacingRenderer=new DimensionGroupSpacingRenderer(null,connectionRenderer,group,null);
      dimensionGroupSpacing.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
      dimensionGroupSpacing.setPixelSizeX(50);
    }
    dimensionGroupSpacingRenderer.setLineLength(archHeight);
    dimensionGroupSpacing.setRenderer(dimensionGroupSpacingRenderer);
    centerRowLayout.append(dimensionGroupSpacing);
  }
  centerLayout=new LayoutTemplate();
  centerLayout.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
  centerLayout.setBaseElementLayout(centerRowLayout);
  ViewFrustum centerArchFrustum=new ViewFrustum(viewFrustum.getProjectionMode(),0,centerLayoutWidth,0,viewFrustum.getHeight(),0,1);
  centerLayoutManager=new LayoutManager(centerArchFrustum);
  centerLayoutManager.setTemplate(centerLayout);
  centerLayoutManager.updateLayout();
}

Fixed version (ground truth):
private void initLayoutCenter(){
  archSideThickness=viewFrustum.getWidth() * ARCH_STAND_WIDTH_PERCENT;
  archInnerWidth=viewFrustum.getWidth() * (ARCH_STAND_WIDTH_PERCENT + 0.024f);
  archBottomY=viewFrustum.getHeight() * ARCH_BOTTOM_PERCENT;
  archHeight=parentGLCanvas.getPixelGLConverter().getGLHeightForPixelHeight(ARCH_PIXEL_HEIGHT);
  archTopY=archBottomY + archHeight;
  float centerLayoutWidth=viewFrustum.getWidth() - 2 * (archInnerWidth);
  centerRowLayout=new Row("String_Node_Str");
  centerRowLayout.setFrameColor(1,1,0,1);
  centerRowLayout.setDebug(false);
  ElementLayout dimensionGroupSpacing=new ElementLayout("String_Node_Str");
  dimensionGroupSpacing.setDebug(true);
  DimensionGroupSpacingRenderer dimensionGroupSpacingRenderer=new DimensionGroupSpacingRenderer(null,connectionRenderer,null,dimensionGroupManager.getDimensionGroups().get(dimensionGroupManager.getCenterGroupStartIndex()));
  dimensionGroupSpacing.setRenderer(dimensionGroupSpacingRenderer);
  dimensionGroupSpacingRenderer.setLineLength(archHeight);
  dimensionGroupSpacing.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
  dimensionGroupSpacing.setPixelSizeX(70);
  centerRowLayout.append(dimensionGroupSpacing);
  for (int dimensionGroupIndex=dimensionGroupManager.getCenterGroupStartIndex(); dimensionGroupIndex < dimensionGroupManager.getRightGroupStartIndex(); dimensionGroupIndex++) {
    DimensionGroup group=dimensionGroupManager.getDimensionGroups().get(dimensionGroupIndex);
    group.setCollapsed(false);
    group.setArchHeight(ARCH_PIXEL_HEIGHT);
    centerRowLayout.append(group.getLayout());
    centerRowLayout.setDebug(true);
    if (dimensionGroupIndex != dimensionGroupManager.getRightGroupStartIndex() - 1) {
      dimensionGroupSpacing=new ElementLayout("String_Node_Str");
      dimensionGroupSpacingRenderer=new DimensionGroupSpacingRenderer(relationAnalyzer,connectionRenderer,group,dimensionGroupManager.getDimensionGroups().get(dimensionGroupIndex + 1));
      dimensionGroupSpacing.grabX();
    }
 else {
      dimensionGroupSpacing=new ElementLayout("String_Node_Str");
      dimensionGroupSpacingRenderer=new DimensionGroupSpacingRenderer(null,connectionRenderer,group,null);
      dimensionGroupSpacing.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
      dimensionGroupSpacing.setPixelSizeX(50);
    }
    dimensionGroupSpacing.setDebug(true);
    dimensionGroupSpacingRenderer.setLineLength(archHeight);
    dimensionGroupSpacing.setRenderer(dimensionGroupSpacingRenderer);
    centerRowLayout.append(dimensionGroupSpacing);
  }
  centerLayout=new LayoutTemplate();
  centerLayout.setPixelGLConverter(parentGLCanvas.getPixelGLConverter());
  centerLayout.setBaseElementLayout(centerRowLayout);
  ViewFrustum centerArchFrustum=new ViewFrustum(viewFrustum.getProjectionMode(),0,centerLayoutWidth,0,viewFrustum.getHeight(),0,1);
  centerLayoutManager=new LayoutManager(centerArchFrustum);
  centerLayoutManager.setTemplate(centerLayout);
  centerLayoutManager.updateLayout();
}