Set<T> getAll();
Map<String, T> getAsMap();
Set<T> findAll(Spec<? super T> spec);
PluginCollection<T> matching(Spec<? super T> spec);
T findByName(String name);
<BUG>T getByName(String name) throws UnknownTaskException;
</BUG>
<S extends T> PluginCollection<S> withType(Class<S> type);
Action<? super T> whenPluginAdded(Action<? super T> action);
void whenPluginAdded(Closure closure);

Set<T> getAll();
Map<String, T> getAsMap();
Set<T> findAll(Spec<? super T> spec);
PluginCollection<T> matching(Spec<? super T> spec);
T findByName(String name);
T getByName(String name) throws UnknownPluginException;
<S extends T> PluginCollection<S> withType(Class<S> type);
Action<? super T> whenPluginAdded(Action<? super T> action);
void whenPluginAdded(Closure closure);
