Program: 124227
Project: 124227
Buggy source:
@Override public void run(){
  TreeNode treeNode=null;
  boolean needWarning=false;
  if (input) {
    treeNode=XmlmapFactory.eINSTANCE.createTreeNode();
    if (!parent.getOutgoingConnections().isEmpty()) {
      needWarning=true;
    }
  }
 else {
    treeNode=XmlmapFactory.eINSTANCE.createOutputTreeNode();
    OutputTreeNode outputTreeNode=(OutputTreeNode)treeNode;
    EList<Connection> incomingConnections=parent.getIncomingConnections();
    if (!incomingConnections.isEmpty()) {
      needWarning=true;
    }
  }
  boolean canContinue=true;
  if (needWarning) {
    canContinue=MessageDialog.openConfirm(null,"String_Node_Str","String_Node_Str");
  }
  if (canContinue) {
    IInputValidator validataor=new IInputValidator(){
      public String isValid(      String newText){
        String xpath=XmlMapUtil.getXPath(parent.getXpath(),newText,NodeType.ELEMENT);
        EList<TreeNode> children=parent.getChildren();
        boolean exist=false;
        for (        TreeNode child : children) {
          if (child.getXpath() != null && child.getXpath().equals(xpath)) {
            exist=true;
            break;
          }
        }
        if (exist) {
          return "String_Node_Str" + newText + "String_Node_Str";
        }
 else {
          return null;
        }
      }
    }
;
    InputDialog dialog=new InputDialog(null,"String_Node_Str","String_Node_Str","String_Node_Str",validataor);
    int open=dialog.open();
    if (open == Window.OK) {
      XmlMapUtil.detachNodeConnections(parent,mapperManager.getCopyOfMapData(),false);
      treeNode.setName(dialog.getValue());
      treeNode.setNodeType(NodeType.ELEMENT);
      treeNode.setXpath(XmlMapUtil.getXPath(this.parent.getXpath(),treeNode.getName(),treeNode.getNodeType()));
      treeNode.setType(XmlMapUtil.DEFAULT_DATA_TYPE);
      parent.getChildren().add(treeNode);
      parent.setExpression("String_Node_Str");
      if (!input) {
        OutputTreeNode output=(OutputTreeNode)parent;
        if (!XmlMapUtil.isExpressionEditable(output) && output.isAggregate()) {
          output.setAggregate(false);
        }
      }
      if (parent.eContainer() instanceof TreeNode && XmlMapUtil.DOCUMENT.equals(((TreeNode)parent.eContainer()).getType())) {
        if (parent.isLoop()) {
          parent.setLoop(false);
        }
      }
    }
    if (open == Window.OK && mapperManager != null) {
      TreeNode docRoot=XmlMapUtil.getTreeNodeRoot(parent);
      if (input) {
        if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
          mapperManager.refreshInputTreeSchemaEditor((InputXmlTree)docRoot.eContainer());
        }
      }
 else {
        if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
          mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree)docRoot.eContainer());
        }
      }
    }
  }
}

Fixed version (ground truth):
@Override public void run(){
  TreeNode treeNode=null;
  boolean needWarning=false;
  if (input) {
    treeNode=XmlmapFactory.eINSTANCE.createTreeNode();
    if (!parent.getOutgoingConnections().isEmpty()) {
      needWarning=true;
    }
  }
 else {
    treeNode=XmlmapFactory.eINSTANCE.createOutputTreeNode();
    OutputTreeNode outputTreeNode=(OutputTreeNode)treeNode;
    EList<Connection> incomingConnections=parent.getIncomingConnections();
    if (!incomingConnections.isEmpty()) {
      needWarning=true;
    }
  }
  boolean canContinue=true;
  if (needWarning) {
    canContinue=MessageDialog.openConfirm(null,"String_Node_Str","String_Node_Str");
  }
  if (canContinue) {
    IInputValidator validataor=new IInputValidator(){
      public String isValid(      String newText){
        String xpath=XmlMapUtil.getXPath(parent.getXpath(),newText,NodeType.ELEMENT);
        EList<TreeNode> children=parent.getChildren();
        boolean exist=false;
        for (        TreeNode child : children) {
          if (child.getXpath() != null && child.getXpath().equals(xpath)) {
            exist=true;
            break;
          }
        }
        if (exist) {
          return "String_Node_Str" + newText + "String_Node_Str";
        }
 else {
          return null;
        }
      }
    }
;
    InputDialog dialog=new InputDialog(null,"String_Node_Str","String_Node_Str","String_Node_Str",validataor);
    int open=-1;
    String label="String_Node_Str";
    while (!StringUtil.validateLabelForXML(label)) {
      open=dialog.open();
      if (open == InputDialog.OK) {
        label=dialog.getValue().trim();
      }
      if (open == InputDialog.CANCEL) {
        return;
      }
    }
    if (open == Window.OK) {
      XmlMapUtil.detachNodeConnections(parent,mapperManager.getCopyOfMapData(),false);
      treeNode.setName(label);
      treeNode.setNodeType(NodeType.ELEMENT);
      treeNode.setXpath(XmlMapUtil.getXPath(this.parent.getXpath(),treeNode.getName(),treeNode.getNodeType()));
      treeNode.setType(XmlMapUtil.DEFAULT_DATA_TYPE);
      parent.getChildren().add(treeNode);
      parent.setExpression("String_Node_Str");
      if (!input) {
        OutputTreeNode output=(OutputTreeNode)parent;
        if (!XmlMapUtil.isExpressionEditable(output) && output.isAggregate()) {
          output.setAggregate(false);
        }
      }
      if (parent.eContainer() instanceof TreeNode && XmlMapUtil.DOCUMENT.equals(((TreeNode)parent.eContainer()).getType())) {
        if (parent.isLoop()) {
          parent.setLoop(false);
        }
      }
    }
    if (open == Window.OK && mapperManager != null) {
      TreeNode docRoot=XmlMapUtil.getTreeNodeRoot(parent);
      if (input) {
        if (docRoot != null && docRoot.eContainer() instanceof InputXmlTree) {
          mapperManager.refreshInputTreeSchemaEditor((InputXmlTree)docRoot.eContainer());
        }
      }
 else {
        if (docRoot != null && docRoot.eContainer() instanceof OutputXmlTree) {
          mapperManager.refreshOutputTreeSchemaEditor((OutputXmlTree)docRoot.eContainer());
        }
      }
    }
  }
}