docs: public static void main(String[] args) throws SolverException {
  		// RandomVariableDifferentiableAAD is possible here!
  		// RandomVariable[] initialParameters = new RandomVariable[] { new RandomVariableDifferentiableAAD(2), new RandomVariableDifferentiableAAD(2) };
  		RandomVariable[] initialParameters = new RandomVariable[] { new RandomVariableFromDoubleArray(2), new RandomVariableFromDoubleArray(2) };
  		RandomVariable[] weights = new RandomVariable[] { new RandomVariableFromDoubleArray(1), new RandomVariableFromDoubleArray(1) };
  		RandomVariable[] parameterSteps = new RandomVariable[] { new RandomVariableFromDoubleArray(1), new RandomVariableFromDoubleArray(1) };
  		int maxIteration = 100;
  		RandomVariable[] targetValues = new RandomVariable[] { new RandomVariableFromDoubleArray(25), new RandomVariableFromDoubleArray(100) };
  
  		StochasticPathwiseLevenbergMarquardt optimizer = new StochasticPathwiseLevenbergMarquardt(initialParameters, targetValues, weights, parameterSteps, maxIteration, null, null) {
  			private static final long serialVersionUID = -282626938650139518L;
  
  			// Override your objective function here
  			@Override
  			public void setValues(RandomVariable[] parameters, RandomVariable[] values) {
  				values[0] = parameters[0].mult(0.0).add(parameters[1]).squared();
  				values[1] = parameters[0].mult(2.0).add(parameters[1]).squared();
  			}
  		};
  
  		// Set solver parameters
  
  		optimizer.run();
  
  		RandomVariable[] bestParameters = optimizer.getBestFitParameters();
  		System.out.println("The solver for problem 1 required " + optimizer.getIterations() + " iterations. The best fit parameters are:");
  		for (int i = 0; i < bestParameters.length; i++) {
  			System.out.println("\tparameter[" + i + "]: " + bestParameters[i]);
  		}
  		System.out.println("The solver accuracy is " + optimizer.getRootMeanSquaredError());
  
  		/*
  		 * Creating a clone, continuing the search with new target values.
  		 * Note that we do not re-define the setValues method.
  		 */
  		//		Optimizer optimizer2 = optimizer.getCloneWithModifiedTargetValues(new double[] { 5.1, 10.2 }, new double[] { 1, 1 }, true);
  		//		optimizer2.run();
  
  		//		double[] bestParameters2 = optimizer2.getBestFitParameters();
  		//		System.out.println("The solver for problem 2 required " + optimizer2.getIterations() + " iterations. The best fit parameters are:");
  		//		for (int i = 0; i < bestParameters2.length; i++) System.out.println("\tparameter[" + i + "]: " + bestParameters2[i]);
  	}