Conceptually there is a different filter for each class of events: function events, messages and collective operations. During analysis the event is recognized when the expression is matched.
The behavior of a filter is determined at the time of its creation. A filter continues filtering until it is changed, even when the thread groups or function groups that it references are changed. Events are treated as belonging to these groups based on the state of the groups at the time the filter was first created.