### Question:
Differentiator { public static <V extends Vertex> PartialsWithRespectTo forwardModeAutoDiff(V wrt, V... of) { return forwardModeAutoDiff(wrt, new HashSet<>(Arrays.asList(of))); }  static PartialsWithRespectTo forwardModeAutoDiff(V wrt, V... of); static PartialsWithRespectTo forwardModeAutoDiff(V wrt, Collection<V> of); static PartialsOf reverseModeAutoDiff(Vertex ofVertex, Set<? extends Vertex> wrt); static PartialsOf reverseModeAutoDiff(Vertex ofVertex, Vertex... wrt); static PartialsOf reverseModeAutoDiff(Vertex ofVertex, ReverseModePartialDerivative dWrtOfVertex, Set<? extends Vertex> wrt);  }### Answer:
@Test public void canForwardAutoDiffOfSingleOuputWithRespectToMany() { GaussianVertex A = new GaussianVertex(0, 1); GaussianVertex B = new GaussianVertex(0, 1); DoubleVertex C = A.times(B); DoubleTensor dCdA = Differentiator.forwardModeAutoDiff(A, C).of(C); DoubleTensor dCdB = Differentiator.forwardModeAutoDiff(B, C).of(C); assertEquals(A.getValue(), dCdB); assertEquals(B.getValue(), dCdA); }