Program: 107990
Project: 107990
Buggy source:
@Override public void handleEvent(Event event){
  if (chart != null) {
    IAxisSet axisSet=chart.getAxisSet();
    if (axisSet != null) {
      IAxis xAxis=axisSet.getXAxis(0);
      if (xAxis != null) {
        Point cursor=chart.getPlotArea().toControl(Display.getCurrent().getCursorLocation());
        if (cursor.x >= 0 && cursor.x < chart.getPlotArea().getSize().x && cursor.y >= 0 && cursor.y < chart.getPlotArea().getSize().y) {
          String[] series=xAxis.getCategorySeries();
          ISeries[] data=chart.getSeriesSet().getSeries();
          if (data != null && data.length > 0 && series != null) {
            int x=(int)Math.round(xAxis.getDataCoordinate(cursor.x));
            if (x >= 0 && x < series.length && !series[x].equals("String_Node_Str")) {
              builder.setLength(0);
              builder.append("String_Node_Str");
              builder.append(Resources.getMessage("String_Node_Str")).append("String_Node_Str");
              builder.append(series[x]);
              builder.append("String_Node_Str").append(Resources.getMessage("String_Node_Str")).append("String_Node_Str");
              builder.append(SWTUtil.getPrettyString(data[1].getYSeries()[x]));
              builder.append("String_Node_Str").append(Resources.getMessage("String_Node_Str")).append("String_Node_Str");
              builder.append(SWTUtil.getPrettyString(data[0].getYSeries()[x]));
              builder.append("String_Node_Str");
              root.setToolTipText(builder.toString());
              return;
            }
          }
        }
      }
    }
    root.setToolTipText(null);
  }
}

Fixed version (ground truth):
@Override public void handleEvent(Event event){
  if (chart != null) {
    IAxisSet axisSet=chart.getAxisSet();
    if (axisSet != null) {
      IAxis xAxis=axisSet.getXAxis(0);
      if (xAxis != null) {
        Point cursor=chart.getPlotArea().toControl(Display.getCurrent().getCursorLocation());
        if (cursor.x >= 0 && cursor.x < chart.getPlotArea().getSize().x && cursor.y >= 0 && cursor.y < chart.getPlotArea().getSize().y) {
          String[] series=xAxis.getCategorySeries();
          ISeries[] data=chart.getSeriesSet().getSeries();
          if (data != null && data.length > 0 && series != null) {
            int x=(int)Math.round(xAxis.getDataCoordinate(cursor.x));
            if (x >= 0 && x < series.length && !series[x].equals("String_Node_Str")) {
              builder.setLength(0);
              builder.append("String_Node_Str");
              builder.append(Resources.getMessage("String_Node_Str")).append("String_Node_Str");
              builder.append(series[x]);
              builder.append("String_Node_Str").append(Resources.getMessage("String_Node_Str")).append("String_Node_Str");
              builder.append(SWTUtil.getPrettyString(data[0].getYSeries()[x]));
              builder.append("String_Node_Str").append(Resources.getMessage("String_Node_Str")).append("String_Node_Str");
              builder.append(SWTUtil.getPrettyString(data[1].getYSeries()[x]));
              builder.append("String_Node_Str");
              sash.setToolTipText(builder.toString());
              return;
            }
          }
        }
      }
    }
    sash.setToolTipText(null);
  }
}