content: package ru.yandex.qatools.allure.data.plugins;
  
  import java.util.List;
  
  /**
   * You can use this index to find loaded plugins.
   *
   * @author Dmitry Baev charlie@yandex-team.ru
   *         Date: 10.07.15
   */
  public interface PluginsIndex {
  
      /**
       * Find the plugin by given type. If there is few
       * plugins with given type returns the some of them.
       *
       * @param type the given type of plugin to find.
       * @param <T>  the plugin type to find.
       * @return any loaded plugin with given type or null if
       * there is no such plugin.
       */
      <T> T find(Class<T> type);
  
      /**
       * Find all the plugins with type.
       *
       * @param type the given type of plugin to find.
       * @param <T>  the plugin type to find.
       * @return all loaded plugins with given type or null if
       * there is no such plugins.
       */
      <T> List<T> findAll(Class<T> type);
  
      /**
       * Find plugin by name. See {@link ru.yandex.qatools.allure.data.plugins.Plugin.Name}
       * Returns null if there is no such plugin.
       *
       * @param name the given name of plugin to find.
       * @return found plugin with given name or null if there is no such plugin.
       */
      Plugin find(String name);
  
      /**
       * Get all loaded plugins.
       *
       * @return the list of loaded plguins.
       */
      List<Plugin> getPlugins();
  
  }
  