class DependencyResolver {

    public Collection<Node<?>> resolve(Collection<Class<?>> pluginClasses) {

        final Graph graph = new Graph();
        for (Class<?> pluginClass : pluginClasses) {
            final Collection<Node<?>> deps = processor.getDependencies(pluginClass);
            final Node<?> node = new Node<>(pluginClass);
            if (deps.isEmpty()) {
                graph.addLeaf(node);
            } else {
                graph.addEdges(node, deps);
            }
        }

        return graph.resolve();
    }

    public  DependencyResolver(AnnotationProcessor processor);

}