Sometimes conditions can become quite complex, so for readability I usually split them up and give each component a meaningful name. This defeats short-circuit evaluation ho
The BooleanExpression type doesn't seem to be useful enough to be a class on its own outside your main class and it adds some intellectual weight to your application too. I would simply just write private methods that are named appropriately to run the checks you want. It's much simpler.