NodeDescriptor has both a filter and an archetypeRange attribute.
They contain essentially the same information except that:
archetypeRange is specified using an assertion
filter is specified as an attribute
The archetypeRange is used to describe the archetypes that the NodeDescriptor may contain. However, when invoking the NodeDescriptor.getChildren() method, it is the filter that is used.
filter should be a shorthand version of specifying an archetypeRange assertion
it should be possible to specify either filter or archetypeRange, but not both
the getFilter() method should be deprecated in favour of the getArchetypeRange() method, which will return either the filter or the archetypeRange assertion, depending on what was specified