docs: protected <T> T valueForMember(final String name, final Member injectionTarget, final Class<T> injectionType,
              final Channel channel) throws BeansException {
          if (Channel.class.equals(injectionType)) {
              return injectionType.cast(channel);
          } else if (AbstractStub.class.isAssignableFrom(injectionType)) {
              try {
                  @SuppressWarnings("unchecked")
                  final Class<? extends AbstractStub<?>> stubClass =
                          (Class<? extends AbstractStub<?>>) injectionType.asSubclass(AbstractStub.class);
                  final Constructor<? extends AbstractStub<?>> constructor =
                          ReflectionUtils.accessibleConstructor(stubClass, Channel.class);
                  AbstractStub<?> stub = constructor.newInstance(channel);
                  for (final StubTransformer stubTransformer : getStubTransformers()) {
                      stub = stubTransformer.transform(name, stub);
                  }
                  return injectionType.cast(stub);
              } catch (final NoSuchMethodException | InstantiationException | IllegalAccessException
                      | IllegalArgumentException | InvocationTargetException e) {
                  throw new BeanInstantiationException(injectionType,
                          "Failed to create gRPC client for : " + injectionTarget, e);
              }
          } else {
              throw new InvalidPropertyException(injectionTarget.getDeclaringClass(), injectionTarget.getName(),
                      "Unsupported type " + injectionType.getName());
          }
      }