code: private void inMemoryWeightGraphGenerator() {
      for (TopologySpec topologySpec : topologySpecMap.values()) {
        weightGraphGenerateHelper(topologySpec);
      }
  
      // Filter out connection appearing in servicePolicy.
      // This is where servicePolicy is enforced.
      servicePolicy.populateBlackListedEdges(this.weightedGraph);
      if (servicePolicy.getBlacklistedEdges().size() > 0) {
        for (FlowEdge toDeletedEdge : servicePolicy.getBlacklistedEdges()) {
          weightedGraph.removeEdge(toDeletedEdge);
        }
      }
    }
docs: @return Transform a set of {@link TopologySpec} into a instance of {@link org.jgrapht.graph.WeightedMultigraph}
  and filter out connections between blacklisted vertices that user specified.
  The output of this function only stays in memory, so each time a logical flow is compiled, the multigraph will
  be re-calculated.