Some code depends on having access to a children() method for And, Or ... and Not. As such it is still carrying its conceptual weight. Marking filters that contain other filters.

Removing it will disrupt the some of the SAX / GML / SQL code ...

I had similar trouble with BinarySpatialOperator not sharing a common interface with BinaryComparisonOperator (although they both provided getExpressino1() and getExpression2() methods). In that cased I patched the SQL code ...