public Protocol forName(final String identifier) {
        return this.forName(identifier, null);
    }
@Test
    public void testOverrideBundledProtocols() {
        final TestProtocol baseProtocol = new TestProtocol(Scheme.http) {
            @Override
            public String getProvider() {
                return "test-provider1";
            }

            @Override
            public boolean isBundled() {
                return false;
            }
        };
        final TestProtocol overrideProtocol = new TestProtocol(Scheme.http) {
            @Override
            public String getProvider() {
                return "test-provider2";
            }

            @Override
            public boolean isBundled() {
                return false;
            }
        };
        final ProtocolFactory f = new ProtocolFactory(Stream.of(baseProtocol, overrideProtocol).collect(Collectors.toSet()));
        assertEquals(overrideProtocol, f.forName("test", "test-provider2"));
        assertEquals(baseProtocol, f.forName("test", "test-provider1"));
    }