### Question:
KeanuProbabilisticModelWithGradient extends KeanuProbabilisticModel implements ProbabilisticModelWithGradient { @Override public Map<VariableReference, DoubleTensor> logProbGradients(Map<VariableReference, ?> inputs) { return gradients(inputs, logProbGradientCalculator); } KeanuProbabilisticModelWithGradient(BayesianNetwork bayesianNetwork);  KeanuProbabilisticModelWithGradient(Set<Vertex> variables); @Override Map<VariableReference, DoubleTensor> logProbGradients(Map<VariableReference, ?> inputs); @Override Map<VariableReference, DoubleTensor> logProbGradients(); @Override Map<VariableReference, DoubleTensor> logLikelihoodGradients(Map<VariableReference, ?> inputs); @Override Map<VariableReference, DoubleTensor> logLikelihoodGradients();  }### Answer:
@Test public void canCalculateLogLikelihoodGradient() { Map<? extends VariableReference, DoubleTensor> logProbGradients = model.logProbGradients(); LogProbGradientCalculator logProbGradientCalculator = new LogProbGradientCalculator( Arrays.asList(C, A, B), Arrays.asList(A, B) ); canCalculateLogProbGradient(logProbGradientCalculator, logProbGradients); }