Program: 123180
Project: 123180
Buggy source:
protected void initialize(){
  availableXmlTree.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent event){
      if (availableXmlTree.getMenu() != null) {
        availableXmlTree.getMenu().dispose();
      }
      final TreeItem[] treeItem=((Tree)event.getSource()).getSelection();
      Menu popMenu=new Menu(availableXmlTree);
      MenuItem itemNew=new MenuItem(popMenu,SWT.CASCADE);
      itemNew.setText(Messages.getString("String_Node_Str"));
      MenuItem itemDel=new MenuItem(popMenu,SWT.CASCADE);
      itemDel.setText(Messages.getString("String_Node_Str"));
      itemDel.addSelectionListener(new SelectionAdapter(){
        public void widgetSelected(        SelectionEvent e){
          TreeNodeData currentNodeData=(TreeNodeData)treeItem[0].getParentItem().getData();
          currentNodeData.getXMLNode().removeChild(((TreeNodeData)treeItem[0].getData()).getXMLNode());
          treeItem[0].dispose();
        }
      }
);
      final TreeNodeData treeNodeData=((TreeNodeData)treeItem[0].getData());
      if (treeNodeData.isHasChildTreeNode()) {
        Menu subNewMenu=new Menu(itemNew);
        itemNew.setMenu(subNewMenu);
        Object[] subNodeNames=treeNodeData.getChildNodeNames();
        for (        Object nodeName : subNodeNames) {
          final MenuItem nodeMenuItem=new MenuItem(subNewMenu,SWT.CASCADE);
          final String itemName=(String)nodeName;
          nodeMenuItem.setText(itemName);
          nodeMenuItem.addSelectionListener(new SelectionAdapter(){
            public void widgetSelected(            SelectionEvent e){
              TreeItem newItem=new TreeItem(treeItem[0],0);
              newItem.setText(itemName);
              TreeNodeData newNodeData=null;
              newNodeData=new TreeNodeData();
              Node parentNode=treeNodeData.getXMLNode();
              newNodeData.setXMLNode(parentNode.appendChild(parentNode.getOwnerDocument().createElement(itemName)));
              newNodeData.setTreePath(treeNodeData.getTreePath() + "String_Node_Str" + itemName);
              newNodeData.setTreeNode(ATreeNodeUtil.getTreeNodeByPath(newNodeData.getTreePath()));
              newItem.setData(newNodeData);
            }
          }
);
        }
      }
 else {
        itemNew.setEnabled(false);
      }
      availableXmlTree.setMenu(popMenu);
      if (nodeAttrCompsite != null) {
        nodeAttrCompsite.dispose();
      }
      rebuildAttrComposite(treeNodeData);
      rightComposite.layout();
    }
  }
);
}

Fixed version (ground truth):
@Override protected void initialize(){
  availableXmlTree.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent event){
      if (availableXmlTree.getMenu() != null) {
        availableXmlTree.getMenu().dispose();
      }
      final TreeItem[] treeItem=((Tree)event.getSource()).getSelection();
      Menu popMenu=new Menu(availableXmlTree);
      MenuItem itemNew=new MenuItem(popMenu,SWT.CASCADE);
      itemNew.setText(Messages.getString("String_Node_Str"));
      MenuItem itemDel=new MenuItem(popMenu,SWT.CASCADE);
      itemDel.setText(Messages.getString("String_Node_Str"));
      itemDel.addSelectionListener(new SelectionAdapter(){
        @Override public void widgetSelected(        SelectionEvent e){
          TreeNodeData currentNodeData=(TreeNodeData)treeItem[0].getParentItem().getData();
          currentNodeData.getXMLNode().removeChild(((TreeNodeData)treeItem[0].getData()).getXMLNode());
          treeItem[0].dispose();
        }
      }
);
      final TreeNodeData treeNodeData=((TreeNodeData)treeItem[0].getData());
      if (treeNodeData.isHasChildTreeNode()) {
        Menu subNewMenu=new Menu(itemNew);
        itemNew.setMenu(subNewMenu);
        Object[] subNodeNames=treeNodeData.getChildNodeNames();
        for (        Object nodeName : subNodeNames) {
          final MenuItem nodeMenuItem=new MenuItem(subNewMenu,SWT.CASCADE);
          final String itemName=(String)nodeName;
          nodeMenuItem.setText(itemName);
          nodeMenuItem.addSelectionListener(new SelectionAdapter(){
            @Override public void widgetSelected(            SelectionEvent e){
              TreeItem newItem=new TreeItem(treeItem[0],0);
              newItem.setText(itemName);
              TreeNodeData newNodeData=null;
              newNodeData=new TreeNodeData();
              Node parentNode=treeNodeData.getXMLNode();
              newNodeData.setXMLNode(parentNode.appendChild(parentNode.getOwnerDocument().createElement(itemName)));
              newNodeData.setTreePath(treeNodeData.getTreePath() + "String_Node_Str" + itemName);
              newNodeData.setTreeNode(ATreeNodeUtil.getTreeNodeByPath(newNodeData.getTreePath()));
              newItem.setData(newNodeData);
            }
          }
);
        }
      }
 else {
        itemNew.setEnabled(false);
      }
      availableXmlTree.setMenu(popMenu);
      if (nodeAttrCompsite != null) {
        nodeAttrCompsite.dispose();
      }
      rebuildAttrComposite(treeNodeData);
      setComponentMinSize(treeNodeData.getTreeNode().getLabel());
      rightComposite.layout();
    }
  }
);
}