class AbstractDataProviderInvocationContextProvider implements TestTemplateInvocationContextProvider {

    @Override
    public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) {
        Method testMethod = context.getRequiredTestMethod();

        return AnnotationUtils.findAnnotation(testMethod, testAnnotationClass)
                .map(annotation -> provideInvocationContexts(context, annotation))
                .orElseThrow(() -> new ExtensionConfigurationException(String.format(
                        "Could not find annotation '%s' on test method '%s'.", testAnnotationClass, testMethod)));
    }

    protected  AbstractDataProviderInvocationContextProvider(Class<TEST_ANNOTATION> testAnnotationClass,
            DataConverter dataConverter);
    protected  AbstractDataProviderInvocationContextProvider(Class<TEST_ANNOTATION> testAnnotationClass);

}