Tasks and data-types can now accept arbitrary classes that implement a certain interface or extend a certain class as nested elements by using
add(Type) as the adder method. Details can be found here.
Some of the built-in tasks/types have been enhanced with interface adders of that kind, you can now add a new condtion by <typedef>ing the class (to give it a name) and nesting it into the <condition> task. The same is possible for selectors and filterreaders, it is described in more detail here.
The short version looks like this
Define a condition that checks whether a given value ends with FOO.
and simply use it