public Protocol forName(final String identifier) {
        return this.forName(identifier, null);
    }
@Test
    public void testFindProtocolProviderMismatch() {
        final TestProtocol dav_provider1 = new TestProtocol(Scheme.dav) {
            @Override
            public String getIdentifier() {
                return "dav";
            }

            @Override
            public String getProvider() {
                return "default";
            }

            @Override
            public boolean isBundled() {
                return true;
            }
        };
        final TestProtocol dav_provider2 = new TestProtocol(Scheme.dav) {
            @Override
            public String getIdentifier() {
                return "dav";
            }

            @Override
            public String getProvider() {
                return "provider_2";
            }
        };
        final ProtocolFactory f = new ProtocolFactory(new LinkedHashSet<>(Arrays.asList(dav_provider1, dav_provider2)));
        assertEquals(dav_provider1, f.forName("dav"));
        assertEquals(dav_provider1, f.forName("dav", "default"));
        assertEquals(dav_provider1, f.forName("dav", "g"));
        assertEquals(dav_provider2, f.forName("dav", "provider_2"));
    }