docs: protected boolean parametersMatch(Type requiredParameter, Type beanParameter) {
          if (Types.isActualType(requiredParameter) && Types.isActualType(beanParameter)) {
              /*
               * the required type parameter and the bean type parameter are actual types with identical raw
               * type, and, if the type is parameterized, the bean type parameter is assignable to the required
               * type parameter according to these rules, or
               */
              return matches(requiredParameter, beanParameter);
          }
          if (requiredParameter instanceof WildcardType && Types.isActualType(beanParameter)) {
              /*
               * the required type parameter is a wildcard, the bean type parameter is an actual type and the
               * actual type is assignable to the upper bound, if any, of the wildcard and assignable from the
               * lower bound, if any, of the wildcard, or
               */
              return parametersMatch((WildcardType) requiredParameter, beanParameter);
          }
          if (requiredParameter instanceof WildcardType && beanParameter instanceof TypeVariable<?>) {
              /*
               * the required type parameter is a wildcard, the bean type parameter is a type variable and the
               * upper bound of the type variable is assignable to or assignable from the upper bound, if any, of
               * the wildcard and assignable from the lower bound, if any, of the wildcard, or
               */
              return parametersMatch((WildcardType) requiredParameter, (TypeVariable<?>) beanParameter);
          }
          if (Types.isActualType(requiredParameter) && beanParameter instanceof TypeVariable<?>) {
              /*
               * the required type parameter is an actual type, the bean type parameter is a type variable and
               * the actual type is assignable to the upper bound, if any, of the type variable, or
               */
              return parametersMatch(requiredParameter, (TypeVariable<?>) beanParameter);
          }
          if (requiredParameter instanceof TypeVariable<?> && beanParameter instanceof TypeVariable<?>) {
              /*
               * the required type parameter and the bean type parameter are both type variables and the upper
               * bound of the required type parameter is assignable to the upper bound, if any, of the bean type
               * parameter
               */
              return parametersMatch((TypeVariable<?>) requiredParameter, (TypeVariable<?>) beanParameter);
          }
          return false;
      }