Program: 140565
Project: 140565
Buggy source:
private void createChildrenNode(Tree tree,TreeItemContainer parentItem,TreeColumn[] treeColumns,IIndicatorNode[] branchNodes){
  for (int i=0; i < branchNodes.length; i++) {
    final TreeItemContainer treeItem;
    if (parentItem == null) {
      treeItem=new TreeItemContainer(tree,SWT.NONE,treeColumns.length);
    }
 else {
      treeItem=new TreeItemContainer(parentItem,SWT.NONE,treeColumns.length);
    }
    TreeEditor editor;
    Button checkButton;
    Button rowCheckButton=null;
    Button commonCheckButton;
    List<Button> rowButtonList=new ArrayList<Button>();
    for (int j=0; j < treeColumns.length; j++) {
      if (j == 0) {
        treeItem.setText(0,branchNodes[i].getLabel());
        if (branchNodes[i].getIndicatorEnum() != null) {
          treeItem.setData(INDICATORITEM,branchNodes[i]);
        }
        continue;
      }
 else       if (j == 1 && treeColumns.length > 2) {
        editor=new TreeEditor(tree);
        rowCheckButton=new Button(tree,SWT.CHECK);
        rowCheckButton.addSelectionListener(new SelectionAdapter(){
          @SuppressWarnings("String_Node_Str") @Override public void widgetSelected(          SelectionEvent e){
            Button currentRowBtn=(Button)e.getSource();
            if (currentRowBtn.getSelection()) {
              for (              Button btn : (List<Button>)currentRowBtn.getData(ROWINDICATORFLAG)) {
                ColumnIndicator columnIndicator=(ColumnIndicator)btn.getData(COLUMNINDICATORFLAG);
                IIndicatorNode node=(IIndicatorNode)btn.getData();
                if (ColumnIndicatorRule.match(node,columnIndicator)) {
                  btn.setSelection(true);
                  columnIndicator.addTempIndicatorEnum(node.getIndicatorEnum());
                }
              }
            }
 else {
              for (              Button btn : (List<Button>)currentRowBtn.getData(ROWINDICATORFLAG)) {
                ColumnIndicator columnIndicator=(ColumnIndicator)btn.getData(COLUMNINDICATORFLAG);
                IIndicatorNode node=(IIndicatorNode)btn.getData();
                btn.setSelection(false);
                columnIndicator.removeTempIndicatorEnum(node.getIndicatorEnum());
              }
            }
          }
        }
);
        commonCheckButton=rowCheckButton;
      }
 else {
        editor=new TreeEditor(tree);
        checkButton=new Button(tree,SWT.CHECK);
        checkButton.setData(branchNodes[i]);
        if (((ColumnIndicator)treeColumns[j].getData()).contains(branchNodes[i].getIndicatorEnum())) {
          checkButton.setSelection(true);
        }
        final ColumnIndicator currentColumnIndicator=(ColumnIndicator)treeColumns[j].getData();
        checkButton.setEnabled(ColumnIndicatorRule.match(branchNodes[i],currentColumnIndicator));
        checkButton.addSelectionListener(new ButtonSelectionListener(j,treeItem,branchNodes[i].getIndicatorEnum(),currentColumnIndicator));
        checkButton.setData(COLUMNINDICATORFLAG,currentColumnIndicator);
        commonCheckButton=checkButton;
        rowButtonList.add(checkButton);
      }
      commonCheckButton.pack();
      editor.minimumWidth=commonCheckButton.getSize().x;
      editor.horizontalAlignment=SWT.CENTER;
      editor.setEditor(commonCheckButton,treeItem,j);
      treeItem.setButton(j,commonCheckButton);
    }
    if (rowCheckButton != null) {
      rowCheckButton.setData(ROWINDICATORFLAG,rowButtonList);
    }
    if (branchNodes[i].hasChildren()) {
      createChildrenNode(tree,treeItem,treeColumns,branchNodes[i].getChildren());
    }
    treeItem.setExpanded(true);
  }
}

Fixed version (ground truth):
private void createChildrenNode(Tree tree,TreeItemContainer parentItem,TreeColumn[] treeColumns,IIndicatorNode[] branchNodes){
  for (int i=0; i < branchNodes.length; i++) {
    final TreeItemContainer treeItem;
    if (parentItem == null) {
      treeItem=new TreeItemContainer(tree,SWT.NONE,treeColumns.length);
    }
 else {
      treeItem=new TreeItemContainer(parentItem,SWT.NONE,treeColumns.length);
    }
    TreeEditor editor;
    Button checkButton;
    Button rowCheckButton=null;
    Button commonCheckButton;
    List<Button> rowButtonList=new ArrayList<Button>();
    for (int j=0; j < treeColumns.length; j++) {
      if (j == 0) {
        treeItem.setText(0,branchNodes[i].getLabel());
        if (branchNodes[i].getIndicatorEnum() != null) {
          treeItem.setData(INDICATORITEM,branchNodes[i]);
        }
        continue;
      }
 else       if (j == 1 && treeColumns.length > 2) {
        editor=new TreeEditor(tree);
        rowCheckButton=new Button(tree,SWT.CHECK);
        rowCheckButton.addSelectionListener(new RowSelectButtonListener(j,treeItem,branchNodes[i].getIndicatorEnum(),null));
        commonCheckButton=rowCheckButton;
      }
 else {
        editor=new TreeEditor(tree);
        checkButton=new Button(tree,SWT.CHECK);
        checkButton.setData(branchNodes[i]);
        if (((ColumnIndicator)treeColumns[j].getData()).contains(branchNodes[i].getIndicatorEnum())) {
          checkButton.setSelection(true);
        }
        final ColumnIndicator currentColumnIndicator=(ColumnIndicator)treeColumns[j].getData();
        checkButton.setEnabled(ColumnIndicatorRule.match(branchNodes[i],currentColumnIndicator));
        checkButton.addSelectionListener(new ButtonSelectionListener(j,treeItem,branchNodes[i].getIndicatorEnum(),currentColumnIndicator));
        checkButton.setData(COLUMNINDICATORFLAG,currentColumnIndicator);
        commonCheckButton=checkButton;
        rowButtonList.add(checkButton);
      }
      commonCheckButton.pack();
      editor.minimumWidth=commonCheckButton.getSize().x;
      editor.horizontalAlignment=SWT.CENTER;
      editor.setEditor(commonCheckButton,treeItem,j);
      treeItem.setButton(j,commonCheckButton);
    }
    if (rowCheckButton != null) {
      boolean allChecked=true;
      rowCheckButton.setData(ROWINDICATORFLAG,rowButtonList);
      for (      Button btn : rowButtonList) {
        if (!btn.getSelection()) {
          allChecked=false;
        }
      }
      rowCheckButton.setSelection(allChecked);
    }
    if (branchNodes[i].hasChildren()) {
      createChildrenNode(tree,treeItem,treeColumns,branchNodes[i].getChildren());
    }
    treeItem.setExpanded(true);
  }
}