### Question:
MathExpr implements
		Function<Double[], Double>,
		Serializable { public static String format(final Tree<? extends Op<Double>, ?> tree) { return MathExprFormatter.format(tree); } private  MathExpr(final Tree<? extends Op<Double>, ?> tree, boolean primary);  MathExpr(final Tree<? extends Op<Double>, ?> tree); ISeq<Var<Double>> vars(); TreeNode<Op<Double>> toTree(); @Override Double apply(final Double[] args); double eval(final double... args); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString(); MathExpr simplify(
		final TreeRewriter<Op<Double>> rewriter,
		final int limit
	); MathExpr simplify(final TreeRewriter<Op<Double>> rewriter); MathExpr simplify(); static String format(final Tree<? extends Op<Double>, ?> tree); static MathExpr parse(final String expression); static TreeNode<Op<Double>> parseTree(final String expression); static double eval(final String expression, final double... args); static double eval(
		final Tree<? extends Op<Double>, ?> expression,
		final double... args
	); static int rewrite(final TreeNode<Op<Double>> tree, final int limit); static int rewrite(final TreeNode<Op<Double>> tree); static final TreeRewriter<Op<Double>> CONST_REWRITER; static final TreeRewriter<Op<Double>> ARITHMETIC_REWRITER; static final TreeRewriter<Op<Double>> REWRITER; }### Answer:
@Test public void format() { final String expr = "(((5.0 - 6.0*x) - (3.0 + 4.0)) + sin(x)^34.0) + (1.0 + sin(x*5.0)/4.0)/6.0"; Assert.assertEquals(MathExpr.format(MathExpr.parse(expr).toTree()), expr); }