default Dependencies getAnnotatedDependencies() {
        Set<String> provides = new LinkedHashSet<>();
        Set<String> before = new LinkedHashSet<>();
        Set<String> after = new LinkedHashSet<>();

        for (Annotation annotation : getClass().getAnnotations()) {
            if (annotation instanceof Provides p) provides.addAll(List.of(p.value()));
            if (annotation instanceof com.yahoo.yolean.chain.Provides p) provides.addAll(List.of(p.value()));

            if (annotation instanceof Before b) before.addAll(List.of(b.value()));
            if (annotation instanceof com.yahoo.yolean.chain.Before b) before.addAll(List.of(b.value()));

            if (annotation instanceof After a) after.addAll(List.of(a.value()));
            if (annotation instanceof com.yahoo.yolean.chain.After a) after.addAll(List.of(a.value()));
        }

        provides.add(getClass().getSimpleName());
        provides.add(getClass().getName());

        return new Dependencies(provides, before, after);
    }
Components which can be chained together, and where dependency information is provided through annotations.

@author jonmv
container-core/src/main/java/com/yahoo/component/chain/model/Chainable.java