Program: 57654
Project: 57654
Buggy source:
/** 
 * Creates the toolbar containing buttons for view switching.
 * @param pixelHeight
 * @return
 */
protected Row createToolBar(){
  System.out.println(this.toString());
  Row toolBar=new ToolBar("String_Node_Str",brick);
  toolBar.setPixelSizeY(0);
  ElementLayout spacingLayoutX=new ElementLayout("String_Node_Str");
  spacingLayoutX.setPixelSizeX(SPACING_PIXELS);
  spacingLayoutX.setRatioSizeY(0);
  toolBar.append(spacingLayoutX);
  for (  ElementLayout element : toolBarElements) {
    toolBar.append(element);
  }
  ElementLayout greedyXLayout=new ElementLayout("String_Node_Str");
  greedyXLayout.setGrabX(true);
  greedyXLayout.setRatioSizeY(0);
  toolBar.append(greedyXLayout);
  Button clusterButton=new Button(EPickingType.DIMENSION_GROUP_CLUSTER_BUTTON.name(),CLUSTER_BUTTON_ID,EIconTextures.CLUSTER_ICON);
  ElementLayout clusterButtonLayout=new ElementLayout("String_Node_Str");
  clusterButtonLayout.setPixelSizeX(BUTTON_WIDTH_PIXELS);
  clusterButtonLayout.setPixelSizeY(BUTTON_HEIGHT_PIXELS);
  clusterButtonLayout.setRenderer(new ButtonRenderer(clusterButton,brick,brick.getTextureManager(),DefaultBrickLayoutTemplate.BUTTON_Z));
  toolBar.append(clusterButtonLayout);
  toolBar.append(spacingLayoutX);
  brick.addIDPickingListener(new APickingListener(){
    @Override public void clicked(    Pick pick){
      System.out.println("String_Node_Str" + this);
      brick.getParentComposite().getDisplay().asyncExec(new Runnable(){
        @Override public void run(){
          StartClusteringDialog dialog=new StartClusteringDialog(new Shell(),brick.getDataDomain());
          DataContainer data=brick.getDimensionGroup().getDataContainer();
          dialog.setSourceDimensionPerspective(data.getDimensionPerspective());
          dialog.setSourceRecordPerspective(data.getRecordPerspective());
          dialog.open();
          AClusterConfiguration clusterState=dialog.getClusterState();
          if (clusterState == null)           return;
          RecordPerspective newRecordPerspective=new RecordPerspective(data.getDataDomain());
          newRecordPerspective.setVirtualArray(data.getRecordPerspective().getVirtualArray());
          data.getDataDomain().getTable().registerRecordPerspective(newRecordPerspective);
          data.setRecordPerspective(newRecordPerspective);
          clusterState.setOptionalTargetRecordPerspective(newRecordPerspective);
        }
      }
);
    }
  }
,EPickingType.DIMENSION_GROUP_CLUSTER_BUTTON.name(),CLUSTER_BUTTON_ID);
  return toolBar;
}

Fixed version (ground truth):
/** 
 * Creates the toolbar containing buttons for view switching.
 * @param pixelHeight
 * @return
 */
protected Row createToolBar(){
  System.out.println(this.toString());
  Row toolBar=new ToolBar("String_Node_Str",brick);
  toolBar.setPixelSizeY(0);
  ElementLayout spacingLayoutX=new ElementLayout("String_Node_Str");
  spacingLayoutX.setPixelSizeX(SPACING_PIXELS);
  spacingLayoutX.setRatioSizeY(0);
  toolBar.append(spacingLayoutX);
  for (  ElementLayout element : toolBarElements) {
    toolBar.append(element);
  }
  ElementLayout greedyXLayout=new ElementLayout("String_Node_Str");
  greedyXLayout.setGrabX(true);
  greedyXLayout.setRatioSizeY(0);
  toolBar.append(greedyXLayout);
  Button clusterButton=new Button(EPickingType.DIMENSION_GROUP_CLUSTER_BUTTON.name(),CLUSTER_BUTTON_ID,EIconTextures.CLUSTER_ICON);
  ElementLayout clusterButtonLayout=new ElementLayout("String_Node_Str");
  clusterButtonLayout.setPixelSizeX(BUTTON_WIDTH_PIXELS);
  clusterButtonLayout.setPixelSizeY(BUTTON_HEIGHT_PIXELS);
  clusterButtonLayout.setRenderer(new ButtonRenderer(clusterButton,brick,brick.getTextureManager(),DefaultBrickLayoutTemplate.BUTTON_Z));
  toolBar.append(clusterButtonLayout);
  toolBar.append(spacingLayoutX);
  brick.removeAllTypePickingListeners(EPickingType.DIMENSION_GROUP_CLUSTER_BUTTON.name());
  brick.addTypePickingListener(new APickingListener(){
    @Override public void clicked(    Pick pick){
      System.out.println("String_Node_Str" + this);
      brick.getParentComposite().getDisplay().asyncExec(new Runnable(){
        @Override public void run(){
          StartClusteringDialog dialog=new StartClusteringDialog(new Shell(),brick.getDataDomain());
          DataContainer data=brick.getDimensionGroup().getDataContainer();
          dialog.setSourceDimensionPerspective(data.getDimensionPerspective());
          dialog.setSourceRecordPerspective(data.getRecordPerspective());
          dialog.open();
          AClusterConfiguration clusterState=dialog.getClusterState();
          if (clusterState == null)           return;
          RecordPerspective newRecordPerspective=new RecordPerspective(data.getDataDomain());
          newRecordPerspective.setVirtualArray(data.getRecordPerspective().getVirtualArray());
          data.getDataDomain().getTable().registerRecordPerspective(newRecordPerspective);
          data.setRecordPerspective(newRecordPerspective);
          clusterState.setOptionalTargetRecordPerspective(newRecordPerspective);
        }
      }
);
    }
  }
,EPickingType.DIMENSION_GROUP_CLUSTER_BUTTON.name());
  return toolBar;
}