Plugin create(Options.Plugin plugin) {
        try {
            return instantiate(plugin.pluginString(), plugin.pluginClass(), plugin.argument());
        } catch (IOException | URISyntaxException e) {
            throw new CucumberException(e);
        }
    }
@Test
    void instantiates_single_custom_appendable_plugin_with_stdout() {
        PluginOption option = parse(WantsOutputStream.class.getName());
        WantsOutputStream plugin = (WantsOutputStream) fc.create(option);
        assertThat(plugin.out, is(not(nullValue())));

        CucumberException exception = assertThrows(CucumberException.class, () -> fc.create(option));
        assertThat(exception.getMessage(), is(equalTo(
            "Only one plugin can use STDOUT, now both io.cucumber.core.plugin.PluginFactoryTest$WantsOutputStream " +
                    "and io.cucumber.core.plugin.PluginFactoryTest$WantsOutputStream use it. " +
                    "If you use more than one plugin you must specify output path with io.cucumber.core.plugin.PluginFactoryTest$WantsOutputStream:DIR|FILE|URL")));
    }