Namespaces are more subtle than one would naively assume. For namespaces to be
genuinely extensible, they cannot know anything beyond their scope. This means
that they don't have an absolute index. They can be positioned relative to
another namespace only by a 'sliding' match. This matching can potentially be
ambiguous, so if multiple matches occur an error is returned. Namespaces can
never be empty.