Cleanup work by separating BinaryOperator from UnaryOperators. This will remove (in future) a lot of casts and checks.