Program: 118693
Project: 118693
Buggy source:
@SuppressWarnings("String_Node_Str") public INode buildNodeFromNode(final INode graphicalNode,final IProcess process){
  if (buildGraphicalMap.containsKey(graphicalNode)) {
    return (INode)buildGraphicalMap.get(graphicalNode);
  }
  IComponent component=graphicalNode.getComponent();
  Node newGraphicalNode=null;
  if (EComponentType.GENERIC.equals(component.getComponentType())) {
    newGraphicalNode=new Node(graphicalNode,(IProcess2)process);
  }
 else {
    newGraphicalNode=new Node(graphicalNode.getComponent(),(IProcess2)process);
  }
  newGraphicalNode.setMetadataList(graphicalNode.getMetadataList());
  IExternalNode externalNode=graphicalNode.getExternalNode();
  if (externalNode != null) {
    AbstractExternalData externalEmfData=externalNode.getExternalEmfData();
    newGraphicalNode.getExternalNode().setExternalEmfData(externalEmfData);
  }
  IExternalData externalData=graphicalNode.getExternalData();
  if (externalData != null) {
    try {
      newGraphicalNode.setExternalData(externalData.clone());
    }
 catch (    CloneNotSupportedException e) {
      newGraphicalNode.setExternalData(externalData);
    }
  }
  copyElementParametersValue(graphicalNode,newGraphicalNode);
  newGraphicalNode.setDummy(graphicalNode.isDummy());
  ValidationRulesUtil.createRejectConnector(newGraphicalNode);
  ValidationRulesUtil.updateRejectMetatable(newGraphicalNode,graphicalNode);
  NodeContainer nc=null;
  if (newGraphicalNode.isJoblet() || newGraphicalNode.isMapReduce()) {
    nc=new JobletContainer(newGraphicalNode);
  }
 else {
    nc=new NodeContainer(newGraphicalNode);
  }
  ((Process)process).addNodeContainer(nc);
  buildGraphicalMap.put(graphicalNode,newGraphicalNode);
  IConnection dataConnec;
  for (  IConnection connection : (List<IConnection>)graphicalNode.getOutgoingConnections()) {
    if (!connection.isActivate()) {
      continue;
    }
    INode connTarget=connection.getTarget();
    if (connTarget.getJobletNode() != null) {
      connTarget=connTarget.getJobletNode();
    }
    INode target=buildNodeFromNode(connTarget,process);
    dataConnec=new Connection(newGraphicalNode,target,connection.getLineStyle(),connection.getConnectorName(),connection.getMetaName(),connection.getName(),connection.getUniqueName(),connection.isMonitorConnection());
    copyElementParametersValue(connection,dataConnec);
    dataConnec.setTraceConnection(connection.isTraceConnection());
  }
  newGraphicalNode.setActivate(graphicalNode.isActivate());
  newGraphicalNode.setStart(graphicalNode.isStart());
  return newGraphicalNode;
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") public INode buildNodeFromNode(final INode graphicalNode,final IProcess process){
  if (buildCheckMap == null) {
    initialize();
  }
  if (buildGraphicalMap.containsKey(graphicalNode)) {
    return (INode)buildGraphicalMap.get(graphicalNode);
  }
  IComponent component=graphicalNode.getComponent();
  Node newGraphicalNode=null;
  if (EComponentType.GENERIC.equals(component.getComponentType())) {
    newGraphicalNode=new Node(graphicalNode,(IProcess2)process);
  }
 else {
    newGraphicalNode=new Node(graphicalNode.getComponent(),(IProcess2)process);
  }
  newGraphicalNode.setMetadataList(graphicalNode.getMetadataList());
  IExternalNode externalNode=graphicalNode.getExternalNode();
  if (externalNode != null) {
    AbstractExternalData externalEmfData=externalNode.getExternalEmfData();
    newGraphicalNode.getExternalNode().setExternalEmfData(externalEmfData);
  }
  IExternalData externalData=graphicalNode.getExternalData();
  if (externalData != null) {
    try {
      newGraphicalNode.setExternalData(externalData.clone());
    }
 catch (    CloneNotSupportedException e) {
      newGraphicalNode.setExternalData(externalData);
    }
  }
  copyElementParametersValue(graphicalNode,newGraphicalNode);
  newGraphicalNode.setDummy(graphicalNode.isDummy());
  ValidationRulesUtil.createRejectConnector(newGraphicalNode);
  ValidationRulesUtil.updateRejectMetatable(newGraphicalNode,graphicalNode);
  NodeContainer nc=null;
  if (newGraphicalNode.isJoblet() || newGraphicalNode.isMapReduce()) {
    nc=new JobletContainer(newGraphicalNode);
  }
 else {
    nc=new NodeContainer(newGraphicalNode);
  }
  ((Process)process).addNodeContainer(nc);
  buildGraphicalMap.put(graphicalNode,newGraphicalNode);
  IConnection dataConnec;
  for (  IConnection connection : (List<IConnection>)graphicalNode.getOutgoingConnections()) {
    if (!connection.isActivate()) {
      continue;
    }
    INode connTarget=connection.getTarget();
    if (connTarget.getJobletNode() != null) {
      connTarget=connTarget.getJobletNode();
    }
    INode target=buildNodeFromNode(connTarget,process);
    dataConnec=new Connection(newGraphicalNode,target,connection.getLineStyle(),connection.getConnectorName(),connection.getMetaName(),connection.getName(),connection.getUniqueName(),connection.isMonitorConnection());
    copyElementParametersValue(connection,dataConnec);
    dataConnec.setTraceConnection(connection.isTraceConnection());
  }
  newGraphicalNode.setActivate(graphicalNode.isActivate());
  newGraphicalNode.setStart(graphicalNode.isStart());
  newGraphicalNode.setComponentProperties(graphicalNode.getComponentProperties());
  return newGraphicalNode;
}