static <U, V> ImmutableBiMap<U, V> maximumCardinalityBipartiteMatching(Multimap<U, V> graph) {
    return HopcroftKarp.overBipartiteGraph(graph).perform();
  }
@Test
  public void maximumCardinalityBipartiteMatching_failsWithNullLhs() {
    ListMultimap<String, String> edges = LinkedListMultimap.create();
    edges.put(null, "R1");
    try {
      BiMap<String, String> unused = maximumCardinalityBipartiteMatching(edges);
      fail("Should have thrown.");
    } catch (NullPointerException expected) {
    }
  }