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;