public static List<String> allTasks(ConfigElementImplementationRegistry registry) {
        List<String> allTasks = new ArrayList<>();
        for (Class<? extends Task> task : registry.implementersOf(Task.class)) {
            AttributeAwareConfigTag attributeAwareConfigTag = task.getAnnotation(AttributeAwareConfigTag.class);
            if (attributeAwareConfigTag != null && !allTasks.contains(attributeAwareConfigTag.value())) {
                allTasks.add(attributeAwareConfigTag.value());
            }
            ConfigTag tag = task.getAnnotation(ConfigTag.class);
            if (tag != null && !allTasks.contains(tag.value())) {
                allTasks.add(tag.value());
            }
        }
        return allTasks;
    }
@Test
    public void shouldGetAllTasks() {
        ConfigElementImplementationRegistry registry = new ConfigElementImplementationRegistry();
        registry.registerImplementer(Task.class, AntTask.class, ExecTask.class, NantTask.class, RakeTask.class, FetchTask.class, FetchPluggableArtifactTask.class);

        List<String> tasks = ConfigUtil.allTasks(registry);
        assertThat(tasks.size(), is(5));
        assertThat(tasks, hasItem("ant"));
        assertThat(tasks, hasItem("exec"));
        assertThat(tasks, hasItem("nant"));
        assertThat(tasks, hasItem("rake"));
        assertThat(tasks, hasItem("fetchartifact"));
    }