Program: 173770
Project: 173770
Buggy source:
public void paint(Graphics g){
  Graphics2D g2=(Graphics2D)g;
  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()) {
    g2.setColor(highlightColor);
    g2.fill(hexagon);
    g2.setColor(terrainColor);
    g2.fill(innerHexagon);
    g2.setColor(Color.black);
    g2.draw(innerHexagon);
  }
  paintOverlay(g2);
  paintStationTokens(g2);
  paintOffStationTokens(g2);
  FontMetrics fontMetrics=g2.getFontMetrics();
  if (getHexModel().getTileCost() > 0) {
    g2.drawString(Bank.format(getHexModel().getTileCost()),rectBound.x + (rectBound.width - fontMetrics.stringWidth(Integer.toString(getHexModel().getTileCost()))) * 3 / 5,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 9 / 15));
  }
  Map<PublicCompanyI,City> homes=getHexModel().getHomes();
  if (homes != null) {
    City city;
    Point p;
    homes:     for (    PublicCompanyI company : homes.keySet()) {
      if (company.isClosed())       continue;
      city=homes.get(company);
      if (city.getTokens() != null) {
        for (        TokenI token : city.getTokens()) {
          if (token instanceof BaseToken && ((BaseToken)token).getCompany() == company) {
            continue homes;
          }
        }
      }
      p=getTokenCenter(1,0,getHexModel().getCities().size(),city.getNumber() - 1);
      drawHome(g2,company,p);
    }
  }
  if (getHexModel().isBlocked()) {
    List<PrivateCompanyI> privates=GameManager.getInstance().getCompanyManager().getAllPrivateCompanies();
    for (    PrivateCompanyI p : privates) {
      List<MapHex> blocked=p.getBlockedHexes();
      if (blocked != null) {
        for (        MapHex hex : blocked) {
          if (getHexModel().equals(hex)) {
            g2.drawString("String_Node_Str" + p.getName() + "String_Node_Str",rectBound.x + (rectBound.width - fontMetrics.stringWidth("String_Node_Str" + p.getName() + "String_Node_Str")) * 1 / 2,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 5 / 15));
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
public void paint(Graphics g){
  Graphics2D g2=(Graphics2D)g;
  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()) {
    g2.setColor(highlightColor);
    g2.fill(hexagon);
    g2.setColor(terrainColor);
    g2.fill(innerHexagon);
    g2.setColor(Color.black);
    g2.draw(innerHexagon);
  }
  paintOverlay(g2);
  paintStationTokens(g2);
  paintOffStationTokens(g2);
  FontMetrics fontMetrics=g2.getFontMetrics();
  if (getHexModel().getTileCost() > 0) {
    g2.drawString(Bank.format(getHexModel().getTileCost()),rectBound.x + (rectBound.width - fontMetrics.stringWidth(Integer.toString(getHexModel().getTileCost()))) * 3 / 5,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 9 / 15));
  }
  Map<PublicCompanyI,City> homes=getHexModel().getHomes();
  if (homes != null) {
    City city;
    Point p;
    homes:     for (    PublicCompanyI company : homes.keySet()) {
      if (company.isClosed())       continue;
      city=homes.get(company);
      if (model.hasTokenOfCompany(company))       continue homes;
      p=getTokenCenter(1,0,getHexModel().getCities().size(),city.getNumber() - 1);
      drawHome(g2,company,p);
    }
  }
  if (getHexModel().isBlocked()) {
    List<PrivateCompanyI> privates=GameManager.getInstance().getCompanyManager().getAllPrivateCompanies();
    for (    PrivateCompanyI p : privates) {
      List<MapHex> blocked=p.getBlockedHexes();
      if (blocked != null) {
        for (        MapHex hex : blocked) {
          if (getHexModel().equals(hex)) {
            g2.drawString("String_Node_Str" + p.getName() + "String_Node_Str",rectBound.x + (rectBound.width - fontMetrics.stringWidth("String_Node_Str" + p.getName() + "String_Node_Str")) * 1 / 2,rectBound.y + ((fontMetrics.getHeight() + rectBound.height) * 5 / 15));
          }
        }
      }
    }
  }
}