Program: 118466
Project: 118466
Buggy source:
@Override public void propertyChange(PropertyChangeEvent changeEvent){
  String prop=changeEvent.getPropertyName();
  boolean needUpdateSubjob=false;
  if (prop.equals(EParameterName.HINT.getName())) {
    Node node=((NodeContainer)getModel()).getNode();
  }
 else   if (JobletContainer.UPDATE_JOBLET_CONTENT.equals(prop)) {
    refresh();
    List<AbstractGraphicalEditPart> childrens=getChildren();
    for (    AbstractGraphicalEditPart part : childrens) {
      part.refresh();
    }
    needUpdateSubjob=true;
  }
 else   if (JobletContainer.UPDATE_JOBLET_CONNECTIONS.equals(prop)) {
    refreshSourceConnections();
  }
 else   if (JobletContainer.UPDATE_JOBLET_TITLE_COLOR.equals(prop)) {
    if (getFigure() instanceof JobletContainerFigure) {
      ((JobletContainerFigure)getFigure()).updateJobletContainerColor();
      refreshVisuals();
    }
  }
 else   if (JobletContainer.UPDATE_JOBLET_DISPLAY.equals(prop)) {
    if (getFigure() instanceof JobletContainerFigure) {
      ((JobletContainerFigure)getFigure()).updateJobletContainerColor();
      refreshVisuals();
    }
    needUpdateSubjob=true;
  }
 else   if (changeEvent.getPropertyName().equals("String_Node_Str")) {
    if (getFigure() instanceof JobletContainerFigure) {
      String newValue=(String)changeEvent.getNewValue();
      if (newValue != null && newValue.equals("String_Node_Str")) {
        ((JobletContainerFigure)getFigure()).refreshNodes(true);
      }
 else {
        ((JobletContainerFigure)getFigure()).refreshNodes(false);
      }
      if (((JobletContainer)getModel()).getNode().isMapReduce()) {
        JobletContainer jCon=(JobletContainer)getModel();
        if (jCon.getNode().isMapReduceStart()) {
          jCon.updateJobletNodes(true);
          ((JobletContainerFigure)getFigure()).updateData();
        }
 else         if (jCon.getMrStartContainer() != null) {
          jCon.getMrStartContainer().updateJobletNodes(true);
        }
      }
    }
    refreshVisuals();
  }
 else   if (changeEvent.getPropertyName().equals("String_Node_Str")) {
    if (getFigure() instanceof JobletContainerFigure) {
      ((JobletContainerFigure)getFigure()).refreshMRstatus();
    }
    refreshVisuals();
  }
 else {
    if (getFigure() instanceof JobletContainerFigure) {
      if (((JobletContainer)getModel()).getNode().isMapReduce()) {
        JobletContainer jCon=(JobletContainer)getModel();
        if (jCon.getNode().isMapReduceStart()) {
          jCon.updateJobletNodes(true);
        }
 else         if (jCon.getMrStartContainer() != null) {
          jCon.getMrStartContainer().updateJobletNodes(true);
        }
      }
      ((JobletContainerFigure)getFigure()).updateData();
      refreshVisuals();
    }
  }
  if (changeEvent.getPropertyName().equals(EParameterName.ACTIVATE.getName())) {
    Node node=((NodeContainer)getModel()).getNode();
    if (node.isActivate()) {
      ((JobletContainerFigure)figure).repaint();
      refreshVisuals();
    }
 else {
      ((JobletContainerFigure)figure).repaint();
      refreshVisuals();
    }
  }
  if (changeEvent.getPropertyName().equals(Node.PERFORMANCE_DATA)) {
    refreshVisuals();
  }
  if (needUpdateSubjob) {
    EditPart editPart=getParent();
    if (editPart != null) {
      while ((!(editPart instanceof ProcessPart)) && (!(editPart instanceof SubjobContainerPart))) {
        editPart=editPart.getParent();
      }
      Node node=((NodeContainer)getModel()).getNode();
      List<ISubjobContainer> proSubList=new ArrayList<ISubjobContainer>(((IProcess2)node.getProcess()).getSubjobContainers());
      if (editPart instanceof SubjobContainerPart) {
        JobletContainer nc=(JobletContainer)this.getModel();
        boolean isCollapse=nc.isCollapsed() && !nc.getNode().isMapReduceStart();
        int rightChangewidth=nc.getRightChangeWidth();
        int downChangeheight=nc.getDownChangeHeight();
        int leftChangewidth=nc.getLeftChangeWidth();
        int upChangeheight=nc.getUpChangeHeight();
        if (nc.getNode().isJoblet()) {
          for (          ISubjobContainer sb : proSubList) {
            ((SubjobContainer)sb).refreshNodesLocation(isCollapse,nc,rightChangewidth,downChangeheight,leftChangewidth,upChangeheight);
          }
        }
        editPart.refresh();
      }
    }
  }
  if (changeEvent.getPropertyName().equals(Node.UPDATE_STATUS)) {
    Node node=((NodeContainer)getModel()).getNode();
    ((JobletContainerFigure)getFigure()).updateStatus(node.getStatus());
  }
}

Fixed version (ground truth):
@Override public void propertyChange(PropertyChangeEvent changeEvent){
  String prop=changeEvent.getPropertyName();
  boolean needUpdateSubjob=false;
  if (prop.equals(EParameterName.HINT.getName())) {
    Node node=((NodeContainer)getModel()).getNode();
  }
 else   if (JobletContainer.UPDATE_JOBLET_CONTENT.equals(prop)) {
    refresh();
    List<AbstractGraphicalEditPart> childrens=getChildren();
    for (    AbstractGraphicalEditPart part : childrens) {
      part.refresh();
    }
    needUpdateSubjob=true;
  }
 else   if (JobletContainer.UPDATE_JOBLET_CONNECTIONS.equals(prop)) {
    refreshSourceConnections();
  }
 else   if (JobletContainer.UPDATE_JOBLET_TITLE_COLOR.equals(prop)) {
    if (getFigure() instanceof JobletContainerFigure) {
      ((JobletContainerFigure)getFigure()).updateJobletContainerColor();
      refreshVisuals();
    }
  }
 else   if (JobletContainer.UPDATE_JOBLET_DISPLAY.equals(prop)) {
    if (getFigure() instanceof JobletContainerFigure) {
      ((JobletContainerFigure)getFigure()).updateJobletContainerColor();
      refreshVisuals();
    }
    needUpdateSubjob=true;
  }
 else   if (changeEvent.getPropertyName().equals("String_Node_Str")) {
    if (getFigure() instanceof JobletContainerFigure) {
      String newValue=(String)changeEvent.getNewValue();
      if (newValue != null && newValue.equals("String_Node_Str")) {
        ((JobletContainerFigure)getFigure()).refreshNodes(true);
      }
 else {
        ((JobletContainerFigure)getFigure()).refreshNodes(false);
      }
      if (((JobletContainer)getModel()).getNode().isMapReduce()) {
        JobletContainer jCon=(JobletContainer)getModel();
        if (jCon.getNode().isMapReduceStart()) {
          jCon.updateJobletNodes(true);
          ((JobletContainerFigure)getFigure()).updateData();
        }
 else         if (jCon.getMrStartContainer() != null) {
          jCon.getMrStartContainer().updateJobletNodes(true);
        }
      }
    }
    refreshVisuals();
  }
 else   if (changeEvent.getPropertyName().equals("String_Node_Str")) {
    if (getFigure() instanceof JobletContainerFigure) {
      ((JobletContainerFigure)getFigure()).refreshMRstatus();
    }
    refreshVisuals();
  }
 else {
    if (getFigure() instanceof JobletContainerFigure) {
      if (((JobletContainer)getModel()).getNode().isMapReduce()) {
        JobletContainer jCon=(JobletContainer)getModel();
        if (jCon.getNode().isMapReduceStart()) {
          jCon.updateJobletNodes(true);
        }
 else         if (jCon.getMrStartContainer() != null) {
          jCon.getMrStartContainer().updateJobletNodes(true);
        }
      }
      ((JobletContainerFigure)getFigure()).updateData();
      refreshVisuals();
    }
  }
  if (changeEvent.getPropertyName().equals(EParameterName.ACTIVATE.getName())) {
    Node node=((NodeContainer)getModel()).getNode();
    if (node.isActivate()) {
      ((JobletContainerFigure)figure).repaint();
      refreshVisuals();
    }
 else {
      ((JobletContainerFigure)figure).repaint();
      refreshVisuals();
    }
  }
  if (changeEvent.getPropertyName().equals(Node.PERFORMANCE_DATA)) {
    refreshVisuals();
  }
  if (needUpdateSubjob) {
    EditPart editPart=getParent();
    if (editPart != null) {
      while ((!(editPart instanceof ProcessPart)) && (!(editPart instanceof SubjobContainerPart))) {
        editPart=editPart.getParent();
      }
      Node node=((NodeContainer)getModel()).getNode();
      List<ISubjobContainer> proSubList=new ArrayList<ISubjobContainer>(((IProcess2)node.getProcess()).getSubjobContainers());
      if (editPart instanceof SubjobContainerPart) {
        JobletContainer nc=(JobletContainer)this.getModel();
        boolean isCollapse=nc.isCollapsed() && !nc.getNode().isMapReduceStart();
        int rightChangewidth=nc.getRightChangeWidth();
        int downChangeheight=nc.getDownChangeHeight();
        int leftChangewidth=nc.getLeftChangeWidth();
        int upChangeheight=nc.getUpChangeHeight();
        if (nc.getNode().isJoblet()) {
          for (          ISubjobContainer sb : proSubList) {
            ((SubjobContainer)sb).refreshNodesLocation(isCollapse,nc,rightChangewidth,downChangeheight,leftChangewidth,upChangeheight);
          }
        }
        editPart.refresh();
      }
    }
  }
  if (changeEvent.getPropertyName().equals(Node.UPDATE_STATUS)) {
    Node node=((NodeContainer)getModel()).getNode();
    if (node != null && node.isMapReduce()) {
      ((JobletContainerFigure)this.getFigure()).updateErrorFlag(node.isErrorFlag());
      ((JobletContainerFigure)this.getFigure()).setShowCompareMark(node.isCompareFlag() && !node.isErrorFlag());
      IElementParameter param=node.getElementParameter(EParameterName.INFORMATION.getName());
      if (param != null) {
        boolean showInfoFlag=Boolean.TRUE.equals(param.getValue());
        if (changeEvent.getNewValue() instanceof Integer) {
          Integer status=(Integer)changeEvent.getNewValue();
          if (status != null) {
            ((JobletContainerFigure)this.getFigure()).updateStatus(status,showInfoFlag);
          }
          ((JobletContainerFigure)this.getFigure()).setInfoHint(node.getShowHintText());
        }
        refreshVisuals();
      }
    }
 else {
      ((JobletContainerFigure)getFigure()).updateStatus(node.getStatus());
    }
  }
}