I know I said this was maybe an okay idea, but looking at this closer I'm worried that the semantics here are too subtle, even with the added documentation.  For example, I'm pretty sure we are introducing a bunch of bugs by making this existing class the marker for "null if children are null".  This is because `BinaryPredicate` inherits from `BinaryExpression` but predicates are not always null if one of their children is null.

Instead maybe in the Rule should more explicitly name classes that can be null simplified.  For example, I think it is safe to do it on `BinaryArithmetic`.