The basic idea of this class is to do the following:
1) The find methods retrieve a recursive set of filters, which define which
content objects to retrieve from the database. Those may be combined using
boolean operators.
2) This recursive criterion definition is visited into a query, which limits
the content retrieved from the database. We might not be able to create
sensible queries from all criterion definitions.
3) The query might be possible to optimize (remove empty statements),
reduce singular and and or constructs…
4) Additionally we might need a post-query filtering step, which filters
content objects based on criteria, which could not be converted in to
database statements.