code: public @Nonnull <T> Optional<T> findBean(@Nullable BeanResolutionContext resolutionContext, @Nonnull Class<T> beanType, @Nullable Qualifier<T> qualifier) {
          ArgumentUtils.requireNonNull("beanType", beanType);
          // allow injection the bean context
          if (thisInterfaces.contains(beanType)) {
              return Optional.of((T) this);
          }
  
          T bean = getBeanInternal(resolutionContext, beanType, qualifier, true, false);
          if (bean == null) {
              return Optional.empty();
          } else {
              return Optional.of(bean);
          }
      }
docs: Find an optional bean of the given type and qualifier.
  
  @param resolutionContext The bean context resolution
  @param beanType          The bean type
  @param qualifier         The qualifier
  @param <T>               The bean type parameter
  @return The found bean wrapped as an {@link Optional}