Program: 119214
Project: 119214
Buggy source:
public void run(){
  if (processContext == null) {
    return;
  }
  org.talend.core.model.process.IProcess process=processContext.getProcess();
  if (process == null) {
    return;
  }
  List<INode> nodeList=(List<INode>)process.getGraphicalNodes();
  for (  INode inode : nodeList) {
    if (!inode.isActivate()) {
      continue;
    }
    String nodeUniqueName=inode.getUniqueName();
    if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.PERL) && Problems.nodeList.size() > 0) {
      errorMessMap.clear();
    }
    if (errorMessMap.get(nodeUniqueName) != null) {
      if (inode instanceof Node) {
        IProcessMessage messPro=errorMessMap.get(nodeUniqueName);
        Node node=(Node)inode;
        node.setErrorFlag(true);
        node.setCompareFlag(false);
        node.setErrorInfo(messPro.getContent());
        node.getNodeError().updateState("String_Node_Str",true);
        if (node.isFileScaleComponent()) {
          refreshProgress(psMess,node,nodeUniqueName);
        }
        node.setErrorInfoChange("String_Node_Str",true);
      }
    }
 else {
      if (inode instanceof Node) {
        Node node=(Node)inode;
        if (Problems.nodeList.size() > 0) {
          String befor="String_Node_Str";
          Iterator<Entry<Node,StringBuffer>> set=Problems.nodeList.entrySet().iterator();
          while (set.hasNext()) {
            Entry<Node,StringBuffer> en=set.next();
            Node no=en.getKey();
            String des=en.getValue().toString();
            if (node == no) {
              node.setErrorFlag(true);
              node.setCompareFlag(false);
              node.setErrorInfo(befor + des);
              node.getNodeError().updateState("String_Node_Str",false);
              node.setErrorInfoChange("String_Node_Str",true);
            }
          }
        }
 else {
          if (node.isErrorFlag() == true) {
            node.setErrorFlag(false);
            node.setCompareFlag(false);
            node.setErrorInfo(null);
            node.getNodeError().updateState("String_Node_Str",false);
          }
          if (node.isFileScaleComponent()) {
            refreshProgress(psMess,node,nodeUniqueName);
          }
          if (node.isErrorFlag() == true) {
            node.setErrorInfoChange("String_Node_Str",false);
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
@Override public void run(){
  if (processContext == null) {
    return;
  }
  org.talend.core.model.process.IProcess process=processContext.getProcess();
  if (process == null) {
    return;
  }
  List<INode> nodeList=(List<INode>)process.getGraphicalNodes();
  for (  INode inode : nodeList) {
    if (!inode.isActivate()) {
      continue;
    }
    String nodeUniqueName=inode.getUniqueName();
    if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.PERL) && Problems.nodeList.size() > 0) {
      errorMessMap.clear();
    }
    if (errorMessMap.get(nodeUniqueName) != null) {
      if (inode instanceof Node) {
        IProcessMessage messPro=errorMessMap.get(nodeUniqueName);
        Node node=(Node)inode;
        node.setErrorFlag(true);
        node.setCompareFlag(false);
        node.setErrorInfo(messPro.getContent());
        node.getNodeError().updateState("String_Node_Str",true);
        if (node.isFileScaleComponent()) {
          refreshProgress(psMess,node,nodeUniqueName);
        }
        node.setErrorInfoChange("String_Node_Str",true);
      }
    }
 else {
      if (inode instanceof Node) {
        Node node=(Node)inode;
        if (Problems.nodeList.size() > 0) {
          String befor="String_Node_Str";
          Iterator<Entry<Node,StringBuffer>> set=Problems.nodeList.entrySet().iterator();
          while (set.hasNext()) {
            Entry<Node,StringBuffer> en=set.next();
            Node no=en.getKey();
            String des=en.getValue().toString();
            if (node == no) {
              node.setErrorFlag(true);
              node.setCompareFlag(false);
              node.setErrorInfo(befor + des);
              node.getNodeError().updateState("String_Node_Str",false);
              node.setErrorInfoChange("String_Node_Str",true);
            }
          }
        }
 else {
          if (node.isErrorFlag() == true) {
            node.setErrorFlag(false);
            node.setCompareFlag(false);
            node.setErrorInfo(null);
            node.getNodeError().updateState("String_Node_Str",false);
          }
          if (node.isFileScaleComponent()) {
            refreshProgress(psMess,node,nodeUniqueName);
          }
          if (node.isErrorFlag() == true) {
            node.setErrorInfoChange("String_Node_Str",false);
          }
        }
      }
    }
  }
}