l = a.negate();
r = ((Negation) r).getChild();
return new Multiplication(l, r).evaluate();
} else if (a.isNegative()) { // -a x = -(ax)
return new Negation(new Multiplication(a.negate(), r)).evaluate();
}
} else if (l instanceof Negation) { // (-a)b = -(ab)
return new Negation(new Multiplication(((Negation) l).getChild(), r)).evaluate();
} else if (l instanceof Multiplication) { // (ab) c
Multiplication m = (Multiplication) l;