package cucumber.api;

import java.io.File;
import java.net.URI;
import java.net.URL;

/**
 * Marker interface for all plugins.
 * <p>
 * A plugin can be added to the runtime to listen in on step definition, summary printing and test
 * execution.
 * <p>
 * Plugins must implement one of the following interfaces:
 * <ul>
 * <li>{@link cucumber.api.StepDefinitionReporter}</li>
 * <li>{@link cucumber.api.SummaryPrinter}</li>
 * </ul>
 * <p>
 * Plugins are added to the runtime from the command line or @{@link CucumberOptions} and may be provided with a
 * parameter. To accept this parameter the plugin must have a public constructor that accepts one of the following
 * arguments:
 * <ul>
 * <li>{@link String}</li>
 * <li>{@link Appendable}</li>
 * <li>{@link URI}</li>
 * <li>{@link URL}</li>
 * <li>{@link File}</li>
 * </ul>
 * <p>
 * To make the parameter optional the plugin must also have a public default constructor.
 * <p>
 * Plugins may also implement one of these interfaces:
 * <ul>
 * <li>{@link cucumber.api.formatter.ColorAware}</li>
 * <li>{@link cucumber.api.formatter.StrictAware}</li>
 * <li>{@link cucumber.api.event.EventListener}</li>
 * </ul>
 */
public interface Plugin {
}

@@ -252,195 +252,8 @@
 %3Cp%3E%0A
- * Plugins must implement one of the following interfaces:%0A * %3Cul%3E%0A * %3Cli%3E%7B@link cucumber.api.StepDefinitionReporter%7D%3C/li%3E%0A * %3Cli%3E%7B@link cucumber.api.SummaryPrinter%7D%3C/li%3E%0A * %3C/ul%3E%0A * %3Cp%3E%0A
  * P
@@ -963,24 +963,128 @@
 tener%7D%3C/li%3E%0A
+ * %3Cli%3E%7B@link cucumber.api.StepDefinitionReporter%7D%3C/li%3E%0A * %3Cli%3E%7B@link cucumber.api.SummaryPrinter%7D%3C/li%3E%0A
  * %3C/ul%3E%0A */

Update Plugin docs to reflect that all other interfaces are optional (#1431)