@Override
    public DescriptiveUrlBag toUrl(final Path file) {
        final DescriptiveUrlBag list = new DescriptiveUrlBag();
        for(String scheme : host.getProtocol().getSchemes()) {
            if(Arrays.stream(Scheme.values()).noneMatch(s -> s.name().equals(scheme))) {
                list.add(new DescriptiveUrl(URI.create(String.format("%s://%s%s",
                    scheme, new PunycodeConverter().convert(host.getHostname()), PathNormalizer.normalize(file.getAbsolute()))),
                    DescriptiveUrl.Type.provider,
                    MessageFormat.format(LocaleFactory.localizedString("{0} URL"), StringUtils.capitalize(scheme))));
            }
        }
        return list;
    }
@Test
    public void testHelp() {
        Host host = new Host(new TestProtocol() {
            public String[] getSchemes() {
                return new String[]{"s"};
            }
        }, "localhost");
        Path path = new Path("/file", EnumSet.of(Path.Type.file));
        final DescriptiveUrlBag list = new CustomSchemeUrlProvider(host).toUrl(path).filter(DescriptiveUrl.Type.provider);
        assertEquals(1, list.size());
        assertEquals("S URL", list.find(DescriptiveUrl.Type.provider).getHelp());
    }