public void addPrefix(final String prefix, final String namespaceURI) {
        // putIfAbsent because we may encounter namespace declarations deeper in the document which would
        // override the ones from the top level element, e.g
        // <Events
        //         xmlns="event-logging:3"
        //         xmlns:sm="stroom-meta"
        //         ...
        //         Version="3.4.2">
        //   <Event>
        //     <Meta>
        //       <source xmlns="stroom-meta">
        //
        // the 'stroom-meta' namespace with null prefix would override 'event-logging:3' with null prefix.
        // We would expect the user to do a xpath like '/Events/Event/Meta/sm:source'
        prefixToUriMap.putIfAbsent(prefix, namespaceURI);

        // Add to URI to prefix map.
        uriToPrefixMap.computeIfAbsent(namespaceURI, k -> new HashSet<>())
                .add(prefix);
    }
Holds the namespaces and their prefixes encountered in the output of the element being stepped
stroom-pipeline/src/main/java/stroom/pipeline/filter/NamespaceContextImpl.java