This interface is used to create a filter that filters out the
sessions that have expired. A typical filter would look at the
expiration time and compare with the current time, but there could
be other filters that first select a subset of all sessions based
on some other criteria.
Several filters can be combined dynamically by passing in the result
from one factory as an argument to the next factory. A factory
implementation should use the passed in base filter to combine it
with its own using and/or filter with the desired order.
Note that the order can be important for performance reasons so the
filter that is less likely to pass should be executed first (in case
of an And operation).