docs: @Nullable
    private static Type subtypeOfComponentType(Type[] bounds) {
      for (Type bound : bounds) {
        Type componentType = getComponentType(bound);
        if (componentType != null) {
          // Only the first bound can be a class or array.
          // Bounds after the first can only be interfaces.
          if (componentType instanceof Class) {
            Class<?> componentClass = (Class<?>) componentType;
            if (componentClass.isPrimitive()) {
              return componentClass;
            }
          }
          return subtypeOf(componentType);
        }
      }
      return null;
    }