@Override
    public boolean consumeValue(final RefDataValueProxyConsumerFactory refDataValueProxyConsumerFactory) {
        // try each of our proxies in turn and as soon as one finds a result break out
        boolean foundValue = false;
        // We could construct this object with a pipeline scoped object to hold a
        // map of mapName to refDataValueProxy which we could populate when we find a
        // result. Thus for any future lookups we could try that one first before looping over
        // the rest.  For pipelines with a lot of ref loaders this should speed things up.
        // The downside of this is that it would change the behavior in the event that two
        // ref streams can supply a value for the same map/key
        for (RefDataValueProxy refDataValueProxy : refDataValueProxies) {
            LOGGER.trace("Attempting to consumeBytes with sub-proxy {}", refDataValueProxy);
            foundValue = refDataValueProxy.consumeValue(refDataValueProxyConsumerFactory);
            if (foundValue) {
                LOGGER.trace("Found result with sub-proxy {}", refDataValueProxy);
                break;
            }
        }
        if (foundValue) {
            LOGGER.trace("Result found for proxy {}", this);
        } else {
            LOGGER.trace("No result found for proxy {}", this);
        }
        return foundValue;
    }
Merge the two proxies into one combined one that will use each contained proxy to try to get a value.
Argument order is CRITICAL to ensure lookups are done in the correct order.

@param existingRefDataValueProxy The existing
@param newRefDataValueProxy
@return
stroom-pipeline/src/main/java/stroom/pipeline/refdata/store/MultiRefDataValueProxy.java