Program: 173563
Project: 173563
Buggy source:
public void paint(Graphics g){
  Graphics2D g2=(Graphics2D)g;
  tilePainted=provisionalGUITile != null && hexMap.isTilePainted(provisionalGUITile.getTiled()) || currentGUITile != null && hexMap.isTilePainted(currentGUITile.getTiled());
  if (getAntialias()) {
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
  }
 else {
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
  }
  Color terrainColor=Color.WHITE;
  if (isSelected()) {
    if (!hexMap.hasMapImage()) {
      g2.setColor(highlightColor);
      g2.fill(hexagon);
      g2.setColor(terrainColor);
      g2.fill(innerHexagonSelected);
      g2.setColor(Color.black);
      g2.draw(innerHexagonSelected);
    }
 else {
      g2.setColor(highlightColor);
      g2.draw(hexagon);
      Stroke oldStroke=g2.getStroke();
      g2.setStroke(new BasicStroke(4));
      g2.draw(innerHexagonSelected);
      g2.setStroke(oldStroke);
      g2.setColor(Color.black);
    }
  }
 else   if (isSelectable()) {
    if (!hexMap.hasMapImage()) {
      g2.setColor(selectableColor);
      g2.fill(hexagon);
      g2.setColor(terrainColor);
      g2.fill(innerHexagonSelectable);
      g2.setColor(Color.black);
      g2.draw(innerHexagonSelectable);
    }
 else {
      g2.setColor(selectableColor);
      g2.draw(hexagon);
      g2.setColor(Color.black);
    }
  }
  if (tilePainted)   paintOverlay(g2);
  paintStationTokens(g2);
  paintOffStationTokens(g2);
  if (!tilePainted)   return;
  FontMetrics fontMetrics=g2.getFontMetrics();
  if (getHexModel().getTileCost() > 0) {
    g2.drawString(Currency.format(getHexModel(),getHexModel().getTileCost()),rectBound.x + (rectBound.width - fontMetrics.stringWidth(Integer.toString(getHexModel().getTileCost()))) * 3 / 5,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 9 / 15));
  }
  Map<PublicCompany,Stop> homes=getHexModel().getHomes();
  if (homes != null) {
    Stop homeCity;
    Point p;
    for (    PublicCompany company : homes.keySet()) {
      if (company.isClosed())       continue;
      if (model.hasTokenOfCompany(company))       continue;
      homeCity=homes.get(company);
      if (homeCity == null) {
        List<Stop> stops=getHexModel().getStops();
        for (        Stop stop : stops) {
          if (stop.hasTokenSlotsLeft()) {
            homeCity=stop;
            break;
          }
        }
      }
      p=getTokenCenter(1,homeCity.getBaseTokens().size(),getHexModel().getStops().size(),homeCity.getNumber() - 1);
      drawHome(g2,company,p);
    }
  }
  if (getHexModel().isBlockedForTileLays()) {
    List<PrivateCompany> privates=hexMap.getOrUIManager().getGameUIManager().getGameManager().getCompanyManager().getAllPrivateCompanies();
    for (    PrivateCompany p : privates) {
      List<MapHex> blocked=p.getBlockedHexes();
      if (blocked != null) {
        for (        MapHex hex : blocked) {
          if (getHexModel().equals(hex)) {
            String text="String_Node_Str" + p.getId() + "String_Node_Str";
            g2.drawString(text,rectBound.x + (rectBound.width - fontMetrics.stringWidth(text)) * 1 / 2,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 5 / 15));
          }
        }
      }
    }
  }
  if (model.isReservedForCompany() && currentTiled == model.getPreprintedTiled()) {
    String text="String_Node_Str" + model.getReservedForCompany() + "String_Node_Str";
    g2.drawString(text,rectBound.x + (rectBound.width - fontMetrics.stringWidth(text)) * 1 / 2,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 5 / 25));
  }
}

Fixed version (ground truth):
public void paint(Graphics g){
  Graphics2D g2=(Graphics2D)g;
  tilePainted=provisionalGUITile != null && hexMap.isTilePainted(provisionalGUITile.getTileId()) || currentGUITile != null && hexMap.isTilePainted(currentGUITile.getTileId());
  if (getAntialias()) {
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
  }
 else {
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
  }
  Color terrainColor=Color.WHITE;
  if (isSelected()) {
    if (!hexMap.hasMapImage()) {
      g2.setColor(highlightColor);
      g2.fill(hexagon);
      g2.setColor(terrainColor);
      g2.fill(innerHexagonSelected);
      g2.setColor(Color.black);
      g2.draw(innerHexagonSelected);
    }
 else {
      g2.setColor(highlightColor);
      g2.draw(hexagon);
      Stroke oldStroke=g2.getStroke();
      g2.setStroke(new BasicStroke(4));
      g2.draw(innerHexagonSelected);
      g2.setStroke(oldStroke);
      g2.setColor(Color.black);
    }
  }
 else   if (isSelectable()) {
    if (!hexMap.hasMapImage()) {
      g2.setColor(selectableColor);
      g2.fill(hexagon);
      g2.setColor(terrainColor);
      g2.fill(innerHexagonSelectable);
      g2.setColor(Color.black);
      g2.draw(innerHexagonSelectable);
    }
 else {
      g2.setColor(selectableColor);
      g2.draw(hexagon);
      g2.setColor(Color.black);
    }
  }
  if (tilePainted)   paintOverlay(g2);
  paintStationTokens(g2);
  paintOffStationTokens(g2);
  if (!tilePainted)   return;
  FontMetrics fontMetrics=g2.getFontMetrics();
  if (getHexModel().getTileCost() > 0) {
    g2.drawString(Currency.format(getHexModel(),getHexModel().getTileCost()),rectBound.x + (rectBound.width - fontMetrics.stringWidth(Integer.toString(getHexModel().getTileCost()))) * 3 / 5,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 9 / 15));
  }
  Map<PublicCompany,Stop> homes=getHexModel().getHomes();
  if (homes != null) {
    Stop homeCity;
    Point p;
    for (    PublicCompany company : homes.keySet()) {
      if (company.isClosed())       continue;
      if (model.hasTokenOfCompany(company))       continue;
      homeCity=homes.get(company);
      if (homeCity == null) {
        List<Stop> stops=getHexModel().getStops();
        for (        Stop stop : stops) {
          if (stop.hasTokenSlotsLeft()) {
            homeCity=stop;
            break;
          }
        }
      }
      p=getTokenCenter(1,homeCity.getBaseTokens().size(),getHexModel().getStops().size(),homeCity.getNumber() - 1);
      drawHome(g2,company,p);
    }
  }
  if (getHexModel().isBlockedForTileLays()) {
    List<PrivateCompany> privates=hexMap.getOrUIManager().getGameUIManager().getGameManager().getCompanyManager().getAllPrivateCompanies();
    for (    PrivateCompany p : privates) {
      List<MapHex> blocked=p.getBlockedHexes();
      if (blocked != null) {
        for (        MapHex hex : blocked) {
          if (getHexModel().equals(hex)) {
            String text="String_Node_Str" + p.getId() + "String_Node_Str";
            g2.drawString(text,rectBound.x + (rectBound.width - fontMetrics.stringWidth(text)) * 1 / 2,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 5 / 15));
          }
        }
      }
    }
  }
  if (model.isReservedForCompany() && currentTileId == model.getPreprintedTileId()) {
    String text="String_Node_Str" + model.getReservedForCompany() + "String_Node_Str";
    g2.drawString(text,rectBound.x + (rectBound.width - fontMetrics.stringWidth(text)) * 1 / 2,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 5 / 25));
  }
}