// NetworkLinkerLibrary later (actually in LinkRequests).
// The purpose appears to be encouraging the linker to link to streets where transit actually travels.
// So this is using the shapes from GTFS to decide which edges are used by which routes.
public void buildGraph(Graph graph, HashMap<Class<?>, Object> extra) {
StreetMatcher matcher = new StreetMatcher(graph);
EdgesForRoute edgesForRoute = new EdgesForRoute();
extra.put(EdgesForRoute.class, edgesForRoute);
log.info("matching route variants to street edges...");
// Why do we need to iterate over the routes? Why not just patterns?
for (Route route : graph.index.routeForId.values()) {
for (TripPattern pattern : graph.index.patternsForRoute.get(route)) {