Program: 173687
Project: 173687
Buggy source:
protected void setToolTip(){
  StringBuffer tt=new StringBuffer("String_Node_Str");
  tt.append("String_Node_Str").append(hexName);
  String name=model.getCityName();
  if (Util.hasValue(name)) {
    tt.append("String_Node_Str").append(name).append("String_Node_Str");
  }
  tt.append("String_Node_Str").append(currentTile.getId());
  tt.append("String_Node_Str" + currentTileOrientation + "String_Node_Str");
  if (model.hasOffBoardValues()) {
    tt.append("String_Node_Str");
    tt.append(model.getCurrentOffBoardValue(hexMap.getPhase())).append("String_Node_Str");
    int[] values=model.getOffBoardValues();
    for (int i=0; i < values.length; i++) {
      if (i > 0)       tt.append("String_Node_Str");
      tt.append(values[i]);
    }
    tt.append("String_Node_Str");
  }
 else   if (currentTile.hasStations()) {
    Station st;
    int cityNumber;
    for (    City city : model.getCities()) {
      cityNumber=city.getNumber();
      st=city.getRelatedStation();
      tt.append("String_Node_Str").append(st.getType()).append("String_Node_Str").append(cityNumber).append("String_Node_Str").append(model.getConnectionString(cityNumber)).append("String_Node_Str");
      tt.append(st.getValue());
      if (st.getBaseSlots() > 0) {
        tt.append("String_Node_Str").append(st.getBaseSlots()).append("String_Node_Str");
        List<TokenI> tokens=model.getTokens(cityNumber);
        if (tokens.size() > 0) {
          tt.append("String_Node_Str");
          int oldsize=tt.length();
          for (          TokenI token : tokens) {
            if (tt.length() > oldsize)             tt.append("String_Node_Str");
            tt.append(token.getName());
          }
          tt.append("String_Node_Str");
        }
      }
      tt.append("String_Node_Str" + st.getPosition() + "String_Node_Str");
    }
  }
  String upgrades=currentTile.getUpgradesString(model);
  if (upgrades.equals("String_Node_Str")) {
    tt.append("String_Node_Str");
  }
 else {
    tt.append("String_Node_Str").append(upgrades);
    if (model.getTileCost() > 0)     tt.append("String_Node_Str" + Bank.format(model.getTileCost()));
  }
  if (getHexModel().getDestinations() != null) {
    tt.append("String_Node_Str");
    for (    PublicCompanyI dest : getHexModel().getDestinations()) {
      tt.append("String_Node_Str");
      tt.append(dest.getName());
    }
  }
  tt.append("String_Node_Str");
  toolTip=tt.toString();
}

Fixed version (ground truth):
protected void setToolTip(){
  StringBuffer tt=new StringBuffer("String_Node_Str");
  tt.append("String_Node_Str").append(hexName);
  String name=model.getCityName();
  if (Util.hasValue(name)) {
    tt.append("String_Node_Str").append(name).append("String_Node_Str");
  }
  tt.append("String_Node_Str").append(currentTile.getId());
  tt.append("String_Node_Str" + currentTileOrientation + "String_Node_Str");
  if (model.hasOffBoardValues()) {
    tt.append("String_Node_Str");
    tt.append(model.getCurrentOffBoardValue(hexMap.getPhase())).append("String_Node_Str");
    int[] values=model.getOffBoardValues();
    for (int i=0; i < values.length; i++) {
      if (i > 0)       tt.append("String_Node_Str");
      tt.append(values[i]);
    }
    tt.append("String_Node_Str");
  }
 else   if (currentTile.hasStations()) {
    Station st;
    int cityNumber;
    for (    City city : model.getCities()) {
      cityNumber=city.getNumber();
      st=city.getRelatedStation();
      tt.append("String_Node_Str").append(st.getType()).append("String_Node_Str").append(cityNumber).append("String_Node_Str").append(model.getConnectionString(cityNumber)).append("String_Node_Str");
      tt.append(st.getValue());
      if (st.getBaseSlots() > 0) {
        tt.append("String_Node_Str").append(st.getBaseSlots()).append("String_Node_Str");
        List<TokenI> tokens=model.getTokens(cityNumber);
        if (tokens.size() > 0) {
          tt.append("String_Node_Str");
          int oldsize=tt.length();
          for (          TokenI token : tokens) {
            if (tt.length() > oldsize)             tt.append("String_Node_Str");
            tt.append(token.getName());
          }
          tt.append("String_Node_Str");
        }
      }
      tt.append("String_Node_Str" + st.getPosition() + "String_Node_Str");
    }
    tt.append(bonusToolTipText(currentTile.getRevenueBonuses()));
  }
  tt.append(bonusToolTipText(model.getRevenueBonuses()));
  String upgrades=currentTile.getUpgradesString(model);
  if (upgrades.equals("String_Node_Str")) {
    tt.append("String_Node_Str");
  }
 else {
    tt.append("String_Node_Str").append(upgrades);
    if (model.getTileCost() > 0)     tt.append("String_Node_Str" + Bank.format(model.getTileCost()));
  }
  if (getHexModel().getDestinations() != null) {
    tt.append("String_Node_Str");
    for (    PublicCompanyI dest : getHexModel().getDestinations()) {
      tt.append("String_Node_Str");
      tt.append(dest.getName());
    }
  }
  tt.append("String_Node_Str");
  toolTip=tt.toString();
}