private Executable[] getConstructorCandidates(
            final ConfigurableListableBeanFactory beanFactory,
            final BeanDefinition beanDefinition,
            final Class<?> clazz) {

        if (beanDefinition != null) {
            final String factoryBeanName = beanDefinition.getFactoryBeanName();
            final String factoryMethodName = beanDefinition.getFactoryMethodName();
            if (factoryBeanName != null && factoryMethodName != null) {
                final Class<?> factoryClass = beanFactory.getType(factoryBeanName);
                if (factoryClass != null) {
                    return Arrays.stream(factoryClass.getDeclaredMethods())
                            .filter(m -> factoryMethodName.equals(m.getName()))
                            .toArray(Executable[]::new);
                }
            }
        }
        return clazz.getDeclaredConstructors();
    }
{@link BeanFactoryPostProcessor} that searches the bean definitions for {@link GrpcClient} annotations on
constructors and factory methods.
grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/inject/GrpcClientConstructorInjectionBeanFactoryPostProcessor.java