### Question:
Graphs { public static <V> Graph<V> newInstance() { return new HashGraph<>(); } private  Graphs(); static Graph<V> newInstance(); static Graph<V> copy(Graph<? extends V> graph); static Set<V> collectHeads(Graph<? extends V> graph); static Set<V> collectTails(Graph<? extends V> graph); static Set<V> collectAllConnected(Graph<? extends V> graph, Collection<? extends V> startNodes); static Set<V> findNearest(
            Graph<? extends V> graph,
            Collection<? extends V> startNodes,
            Predicate<? super V> matcher); static Set<V> collectNearest(
            Graph<? extends V> graph,
            Collection<? extends V> startNodes,
            Predicate<? super V> matcher); static Set<Set<V>> findCircuit(Graph<? extends V> graph); static Set<Set<V>> findStronglyConnectedComponents(Graph<? extends V> graph); static List<V> sortPostOrder(Graph<? extends V> graph); static Graph<V> transpose(Graph<V> graph); static Graph<V> subgraph(Graph<? extends V> graph, Predicate<? super V> matcher);  }### Answer:
@Test public void testNewInstance() { Graph<String> graph = Graphs.newInstance(); assertThat(graph.getNodeSet().isEmpty(), is(true)); }