Program: 120650
Project: 120650
Buggy source:
private Rectangle prepareStatus(Point nodeLocation,Dimension nodeSize){
  Rectangle statusRectangle=null;
  Rectangle breakpointRectangle, warningRectangle, infoRectangle, parallelLocationRectangle, validationRuleRectangle, collapseRectangle;
  int status=node.getStatus();
  if ((status & Process.BREAKPOINT_STATUS) != 0) {
    breakpointLocation.x=nodeLocation.x - breakpointSize.width;
    breakpointLocation.y=nodeLocation.y - breakpointSize.height;
    breakpointRectangle=new Rectangle(breakpointLocation,breakpointSize);
    statusRectangle=breakpointRectangle;
  }
  if ((status & Process.ERROR_STATUS) != 0) {
    errorLocation.x=nodeLocation.x + nodeSize.width;
    errorLocation.y=nodeLocation.y - errorSize.height;
    errorRectangle=new Rectangle(errorLocation,errorSize);
    if (statusRectangle == null) {
      statusRectangle=errorRectangle;
    }
 else {
      statusRectangle.union(errorRectangle);
    }
  }
  if ((status & Process.WARNING_STATUS) != 0) {
    warningLocation.x=nodeLocation.x + nodeSize.width;
    warningLocation.y=nodeLocation.y - warningSize.height;
    warningRectangle=new Rectangle(warningLocation,warningSize);
    if (statusRectangle == null) {
      statusRectangle=warningRectangle;
    }
 else {
      statusRectangle.union(warningRectangle);
    }
  }
  if (this instanceof JobletContainer) {
    Dimension collapseSize=new Dimension(20,20);
    collapseLocation.x=nodeLocation.x - 20;
    collapseLocation.y=nodeLocation.y - collapseSize.height;
    collapseRectangle=new Rectangle(collapseLocation,collapseSize);
    if (statusRectangle == null) {
      Point extendPoint=new Point();
      extendPoint.x=nodeLocation.x + nodeSize.width;
      extendPoint.y=nodeLocation.y - warningSize.height;
      Rectangle extendRectangle=new Rectangle(extendPoint,warningSize);
      statusRectangle=extendRectangle;
    }
    statusRectangle.union(collapseRectangle);
  }
  if ((status & Process.INFO_STATUS) != 0) {
    infoLocation.x=nodeLocation.x + nodeSize.width;
    infoLocation.y=nodeLocation.y - infoSize.height;
    infoRectangle=new Rectangle(infoLocation,infoSize);
    if (statusRectangle == null) {
      statusRectangle=infoRectangle;
    }
 else {
      statusRectangle.union(infoRectangle);
    }
  }
  if ((status & Process.VALIDATION_RULE_STATUS) != 0) {
    validationRuleLocation.x=nodeLocation.x + nodeSize.width / 2 + nodeSize.width / 4;
    validationRuleLocation.y=nodeLocation.y - validationRuleSize.height / 2;
    validationRuleRectangle=new Rectangle(validationRuleLocation,validationRuleSize);
    if (statusRectangle == null) {
      statusRectangle=validationRuleRectangle;
    }
 else {
      statusRectangle.union(validationRuleRectangle);
    }
  }
  if (node.isErrorFlag()) {
    markLocation.x=nodeLocation.x - nodeSize.width / 2;
    markLocation.y=nodeLocation.y;
    errorMarkLocation.x=nodeLocation.x - (errorMarkSize.width - nodeSize.width) / 2;
    errorMarkLocation.y=markLocation.y - errorMarkSize.height;
    errorMarkRectangle=new Rectangle(errorMarkLocation,errorMarkSize);
    if (statusRectangle == null) {
      statusRectangle=errorMarkRectangle;
    }
 else {
      statusRectangle.union(errorMarkRectangle);
    }
  }
  boolean parallelize=false;
  IElementParameter enableParallelizeParameter=node.getElementParameter(EParameterName.PARALLELIZE.getName());
  if (enableParallelizeParameter != null) {
    parallelize=(Boolean)enableParallelizeParameter.getValue();
  }
  if (parallelize) {
    parallelLocation.x=nodeLocation.x - nodeSize.width / 2 - parallelSize.width;
    parallelLocation.y=nodeLocation.y - parallelSize.height;
    parallelLocationRectangle=new Rectangle(parallelLocation,parallelSize);
    if (statusRectangle == null) {
      statusRectangle=parallelLocationRectangle;
    }
 else {
      statusRectangle.union(parallelLocationRectangle);
    }
  }
  return statusRectangle;
}

Fixed version (ground truth):
private Rectangle prepareStatus(Point nodeLocation,Dimension nodeSize){
  Rectangle statusRectangle=null;
  Rectangle breakpointRectangle, warningRectangle, infoRectangle, parallelLocationRectangle, validationRuleRectangle, collapseRectangle;
  int status=node.getStatus();
  if ((status & Process.BREAKPOINT_STATUS) != 0) {
    breakpointLocation.x=nodeLocation.x - breakpointSize.width;
    breakpointLocation.y=nodeLocation.y - breakpointSize.height;
    breakpointRectangle=new Rectangle(breakpointLocation,breakpointSize);
    statusRectangle=breakpointRectangle;
  }
  if ((status & Process.ERROR_STATUS) != 0) {
    errorLocation.x=nodeLocation.x + nodeSize.width;
    errorLocation.y=nodeLocation.y - errorSize.height;
    errorRectangle=new Rectangle(errorLocation,errorSize);
    if (statusRectangle == null) {
      statusRectangle=errorRectangle;
    }
 else {
      statusRectangle.union(errorRectangle);
    }
  }
  if ((status & Process.WARNING_STATUS) != 0) {
    warningLocation.x=nodeLocation.x + nodeSize.width;
    warningLocation.y=nodeLocation.y - warningSize.height;
    warningRectangle=new Rectangle(warningLocation,warningSize);
    if (statusRectangle == null) {
      statusRectangle=warningRectangle;
    }
 else {
      statusRectangle.union(warningRectangle);
    }
  }
  if (this instanceof JobletContainer) {
    Dimension collapseSize=new Dimension(20,20);
    collapseLocation.x=nodeLocation.x - 20;
    collapseLocation.y=nodeLocation.y - collapseSize.height;
    collapseRectangle=new Rectangle(collapseLocation,collapseSize);
    if (statusRectangle == null) {
      Point extendPoint=new Point();
      extendPoint.x=nodeLocation.x + nodeSize.width;
      extendPoint.y=nodeLocation.y - warningSize.height;
      Rectangle extendRectangle=new Rectangle(extendPoint,warningSize);
      statusRectangle=extendRectangle;
    }
    statusRectangle.union(collapseRectangle);
  }
  if ((status & Process.INFO_STATUS) != 0) {
    infoLocation.x=nodeLocation.x + nodeSize.width;
    infoLocation.y=nodeLocation.y - infoSize.height;
    infoRectangle=new Rectangle(infoLocation,infoSize);
    if (statusRectangle == null) {
      statusRectangle=infoRectangle;
    }
 else {
      statusRectangle.union(infoRectangle);
    }
  }
  if ((status & Process.VALIDATION_RULE_STATUS) != 0) {
    validationRuleLocation.x=nodeLocation.x + nodeSize.width / 2 + nodeSize.width / 4;
    validationRuleLocation.y=nodeLocation.y - validationRuleSize.height / 2;
    validationRuleRectangle=new Rectangle(validationRuleLocation,validationRuleSize);
    if (statusRectangle == null) {
      statusRectangle=validationRuleRectangle;
    }
 else {
      statusRectangle.union(validationRuleRectangle);
    }
  }
  if (node.isErrorFlag()) {
    markLocation.x=nodeLocation.x - nodeSize.width / 2;
    markLocation.y=nodeLocation.y;
    errorMarkLocation.x=nodeLocation.x - (errorMarkSize.width - nodeSize.width) / 2;
    errorMarkLocation.y=markLocation.y - errorMarkSize.height;
    errorMarkRectangle=new Rectangle(errorMarkLocation,errorMarkSize);
    if (statusRectangle == null) {
      statusRectangle=errorMarkRectangle;
    }
 else {
      statusRectangle.union(errorMarkRectangle);
    }
  }
  boolean parallelize=false;
  IElementParameter enableParallelizeParameter=node.getElementParameter(EParameterName.PARALLELIZE.getName());
  if (enableParallelizeParameter != null) {
    parallelize=(Boolean)enableParallelizeParameter.getValue();
  }
  if (parallelize) {
    parallelLocation.x=nodeLocation.x - parallelSize.width;
    parallelLocation.y=nodeLocation.y - parallelSize.height;
    parallelLocationRectangle=new Rectangle(parallelLocation,parallelSize);
    if (statusRectangle == null) {
      statusRectangle=parallelLocationRectangle;
    }
 else {
      statusRectangle.union(parallelLocationRectangle);
    }
  }
  return statusRectangle;
}