Program: 173710
Project: 173710
Buggy source:
public void generateGraph(MapManager mapManager,RevenueManager revenueManager){
  for (  MapHex hex : mapManager.getHexesAsList()) {
    TileI tile=hex.getCurrentTile();
    List<Station> stations=tile.getStations();
    for (    Station station : stations) {
      NetworkVertex stationVertex=new NetworkVertex(hex,station);
      mapGraph.addVertex(stationVertex);
      mapVertexes.put(stationVertex.getIdentifier(),stationVertex);
      log.info("String_Node_Str" + stationVertex);
    }
    for (int side=0; side < 6; side++)     if (tile.getTracksPerSide(side).size() != 0) {
      NetworkVertex sideVertex=new NetworkVertex(hex,side + hex.getCurrentTileRotation());
      mapGraph.addVertex(sideVertex);
      mapVertexes.put(sideVertex.getIdentifier(),sideVertex);
      log.info("String_Node_Str" + sideVertex);
    }
  }
  for (  MapHex hex : mapManager.getHexesAsList()) {
    TileI tile=hex.getCurrentTile();
    List<Track> tracks=tile.getTracks();
    for (    Track track : tracks) {
      int[] points=track.points();
      NetworkVertex startVertex=getVertexRotated(hex,points[0]);
      NetworkVertex endVertex=getVertexRotated(hex,points[1]);
      log.info("String_Node_Str" + track);
      NetworkEdge edge=new NetworkEdge(startVertex,endVertex,false);
      if (startVertex == endVertex) {
        log.error("String_Node_Str" + track + "String_Node_Str"+ hex+ "String_Node_Str");
      }
 else {
        mapGraph.addEdge(startVertex,endVertex,edge);
        log.info("String_Node_Str" + edge.getConnection());
      }
    }
    for (int side=0; side <= 2; side++) {
      NetworkVertex vertex=getVertex(hex,side);
      MapHex neighborHex=hex.getNeighbor(side);
      if (neighborHex == null) {
        log.info("String_Node_Str" + hex.getName() + "String_Node_Str"+ hex.getOrientationName(side)+ "String_Node_Str");
        continue;
      }
      NetworkVertex otherVertex=getVertex(neighborHex,side + 3);
      if (vertex == null && otherVertex == null) {
        log.info("String_Node_Str" + hex.getName() + "String_Node_Str"+ hex.getOrientationName(side));
        log.info("String_Node_Str" + neighborHex.getName() + "String_Node_Str"+ neighborHex.getOrientationName(side + 3));
        continue;
      }
 else       if (vertex == null && otherVertex != null) {
        log.info("String_Node_Str" + neighborHex.getName() + "String_Node_Str"+ neighborHex.getOrientationName(side + 3)+ "String_Node_Str"+ hex.getName()+ "String_Node_Str"+ hex.getOrientationName(side));
        vertex=new NetworkVertex(hex,side);
        mapGraph.addVertex(vertex);
        mapVertexes.put(vertex.getIdentifier(),vertex);
        log.info("String_Node_Str" + vertex);
      }
 else       if (otherVertex == null) {
        log.info("String_Node_Str" + hex.getName() + "String_Node_Str"+ hex.getOrientationName(side)+ "String_Node_Str"+ neighborHex.getName()+ "String_Node_Str"+ neighborHex.getOrientationName(side + 3));
        otherVertex=new NetworkVertex(neighborHex,side + 3);
        mapGraph.addVertex(otherVertex);
        mapVertexes.put(otherVertex.getIdentifier(),otherVertex);
        log.info("String_Node_Str" + otherVertex);
      }
      NetworkEdge edge=new NetworkEdge(vertex,otherVertex,true);
      mapGraph.addEdge(vertex,otherVertex,edge);
      log.info("String_Node_Str" + edge.getConnection());
    }
  }
  revenueManager.callGraphModifiers(this);
}

Fixed version (ground truth):
public void generateGraph(MapManager mapManager,RevenueManager revenueManager){
  for (  MapHex hex : mapManager.getHexesAsList()) {
    TileI tile=hex.getCurrentTile();
    List<Station> stations=tile.getStations();
    for (    Station station : stations) {
      NetworkVertex stationVertex=new NetworkVertex(hex,station);
      mapGraph.addVertex(stationVertex);
      mapVertexes.put(stationVertex.getIdentifier(),stationVertex);
      log.info("String_Node_Str" + stationVertex);
    }
    for (int side=0; side < 6; side++)     if (tile.getTracksPerSide(side).size() != 0) {
      NetworkVertex sideVertex=new NetworkVertex(hex,side + hex.getCurrentTileRotation());
      mapGraph.addVertex(sideVertex);
      mapVertexes.put(sideVertex.getIdentifier(),sideVertex);
      log.info("String_Node_Str" + sideVertex);
    }
  }
  for (  MapHex hex : mapManager.getHexesAsList()) {
    TileI tile=hex.getCurrentTile();
    List<Track> tracks=tile.getTracks();
    for (    Track track : tracks) {
      int[] points=track.points();
      NetworkVertex startVertex=getVertexRotated(hex,points[0]);
      NetworkVertex endVertex=getVertexRotated(hex,points[1]);
      log.info("String_Node_Str" + track);
      NetworkEdge edge=new NetworkEdge(startVertex,endVertex,false);
      if (startVertex == endVertex) {
        log.error("String_Node_Str" + track + "String_Node_Str"+ hex+ "String_Node_Str");
      }
 else {
        mapGraph.addEdge(startVertex,endVertex,edge);
        log.info("String_Node_Str" + edge.getConnection());
      }
    }
    for (int side=0; side <= 2; side++) {
      NetworkVertex vertex=getVertex(hex,side);
      MapHex neighborHex=hex.getNeighbor(side);
      if (neighborHex == null) {
        log.info("String_Node_Str" + hex.getName() + "String_Node_Str"+ hex.getOrientationName(side)+ "String_Node_Str");
        continue;
      }
      NetworkVertex otherVertex=getVertex(neighborHex,side + 3);
      if (vertex == null && otherVertex == null) {
        log.info("String_Node_Str" + hex.getName() + "String_Node_Str"+ hex.getOrientationName(side));
        log.info("String_Node_Str" + neighborHex.getName() + "String_Node_Str"+ neighborHex.getOrientationName(side + 3));
        continue;
      }
 else       if (vertex == null && otherVertex != null) {
        log.info("String_Node_Str" + neighborHex.getName() + "String_Node_Str"+ neighborHex.getOrientationName(side + 3)+ "String_Node_Str"+ hex.getName()+ "String_Node_Str"+ hex.getOrientationName(side));
        vertex=new NetworkVertex(hex,side);
        mapGraph.addVertex(vertex);
        mapVertexes.put(vertex.getIdentifier(),vertex);
        log.info("String_Node_Str" + vertex);
      }
 else       if (otherVertex == null) {
        log.info("String_Node_Str" + hex.getName() + "String_Node_Str"+ hex.getOrientationName(side)+ "String_Node_Str"+ neighborHex.getName()+ "String_Node_Str"+ neighborHex.getOrientationName(side + 3));
        otherVertex=new NetworkVertex(neighborHex,side + 3);
        mapGraph.addVertex(otherVertex);
        mapVertexes.put(otherVertex.getIdentifier(),otherVertex);
        log.info("String_Node_Str" + otherVertex);
      }
      NetworkEdge edge=new NetworkEdge(vertex,otherVertex,true);
      mapGraph.addEdge(vertex,otherVertex,edge);
      log.info("String_Node_Str" + edge.getConnection());
    }
  }
  if (revenueManager != null) {
    revenueManager.callGraphModifiers(this);
  }
}