@Nullable
  <T> Class<? extends T> findPlugin(Class<T> pluginType) {
    """
	Returns an implementation class for the specified plugin.
	
	If there is more than such one candidate, the classes will be sorted by {@link Priority}
	and the one with the highest priority will be returned. If multiple classes claim the same
	priority, a {@link ServiceConfigurationError} will be thrown. Classes without a Priority
	are treated as `@Priority(0)`.
	
	@param pluginType the class of the plugin type
	@param <T> the class of the plugin type
	@return the implementing class with the highest priority
    """
    return best(pluginType, findPlugins(pluginType));
  }
@Nullable
  <T> Class<? extends T> findPlugin(Class<T> pluginType) {
    return best(pluginType, findPlugins(pluginType));
  }
@ Nullable < T > Class < ? extends T > findPlugin ( Class < T > pluginType ) { return best ( pluginType , findPlugins ( pluginType ) ) ; }
Returns an implementation class for the specified plugin.

If there is more than such one candidate, the classes will be sorted by {@link Priority}
and the one with the highest priority will be returned. If multiple classes claim the same
priority, a {@link ServiceConfigurationError} will be thrown. Classes without a Priority
are treated as `@Priority(0)`.

@param pluginType the class of the plugin type
@param <T> the class of the plugin type
@return the implementing class with the highest priority
Returns an implementation class for the specified plugin .