Program: 139922
Project: 139922
Buggy source:
/** 
 * @param parent
 */
private Tree createTree(Composite parent){
  final Tree newTree=new Tree(parent,SWT.MULTI | SWT.BORDER);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(newTree);
  newTree.setHeaderVisible(true);
  TreeColumn column1=new TreeColumn(newTree,SWT.CENTER);
  column1.setWidth(190);
  column1.setText(DefaultMessagesImpl.getString("String_Node_Str"));
  TreeColumn column2=new TreeColumn(newTree,SWT.CENTER);
  column2.setWidth(120);
  column2.setText(DefaultMessagesImpl.getString("String_Node_Str"));
  column2.setToolTipText(DefaultMessagesImpl.getString("String_Node_Str"));
  TreeColumn column4=new TreeColumn(newTree,SWT.CENTER);
  column4.setWidth(80);
  column4.setText(DefaultMessagesImpl.getString("String_Node_Str"));
  parent.layout();
  createTreeMenu(newTree,false);
  AbstractAnalysisActionHandler actionHandler=new AbstractAnalysisActionHandler(parent){
    @Override protected void handleRemove(){
      removeSelectedElements(newTree);
    }
  }
;
  parent.setData(AbstractMetadataFormPage.ACTION_HANDLER,actionHandler);
  final LocalSelectionTransfer transfer=LocalSelectionTransfer.getTransfer();
  Transfer[] types=new Transfer[]{transfer};
  int operations=DND.DROP_COPY | DND.DROP_MOVE;
  final DragSource source=new DragSource(newTree,operations);
  source.setTransfer(types);
  final TreeItem[] dragSourceItem=new TreeItem[1];
  source.addDragListener(new DragSourceListener(){
    public void dragStart(    DragSourceEvent event){
      TreeItem[] selection=newTree.getSelection();
      dragSourceItem[0]=selection[0];
      if (selection.length > 0) {
        event.doit=true;
        transfer.setSelection(new StructuredSelection(selection[0].getData(COLUMN_INDICATOR_KEY)));
        getColumnSetMultiValueList().remove(selection[0].getData(COLUMN_INDICATOR_KEY));
      }
 else {
        event.doit=false;
      }
    }
    public void dragSetData(    DragSourceEvent event){
      event.data=dragSourceItem[0];
    }
    public void dragFinished(    DragSourceEvent event){
      if (event.detail == DND.DROP_MOVE) {
        removeItemBranch(dragSourceItem[0]);
        tree.forceFocus();
      }
      dragSourceItem[0]=null;
    }
  }
);
  ColumnViewerDND.installDND(newTree);
  this.addTreeListener(newTree);
  return newTree;
}

Fixed version (ground truth):
/** 
 * @param parent
 */
private Tree createTree(Composite parent){
  final Tree newTree=new Tree(parent,SWT.MULTI | SWT.BORDER);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(newTree);
  newTree.setHeaderVisible(true);
  TreeColumn column1=new TreeColumn(newTree,SWT.CENTER);
  column1.setWidth(190);
  column1.setText(DefaultMessagesImpl.getString("String_Node_Str"));
  TreeColumn column2=new TreeColumn(newTree,SWT.CENTER);
  column2.setWidth(120);
  column2.setText(DefaultMessagesImpl.getString("String_Node_Str"));
  column2.setToolTipText(DefaultMessagesImpl.getString("String_Node_Str"));
  TreeColumn column4=new TreeColumn(newTree,SWT.CENTER);
  column4.setWidth(80);
  column4.setText(DefaultMessagesImpl.getString("String_Node_Str"));
  parent.layout();
  createTreeMenu(newTree,false);
  AbstractAnalysisActionHandler actionHandler=new AbstractAnalysisActionHandler(parent){
    @Override protected void handleRemove(){
      removeSelectedElements(newTree);
    }
  }
;
  parent.setData(AbstractMetadataFormPage.ACTION_HANDLER,actionHandler);
  addSourceDND(newTree);
  addTargetDND(newTree);
  addTreeListener(newTree);
  return newTree;
}