docs: protected Map<String, Object> resolveBoundTypes(DeclaredType type) {
          Map<String, Object> boundTypes = new LinkedHashMap<>(2);
          TypeElement element = (TypeElement) type.asElement();
  
          List<? extends TypeParameterElement> typeParameters = element.getTypeParameters();
          List<? extends TypeMirror> typeArguments = type.getTypeArguments();
          if (typeArguments.size() == typeParameters.size()) {
              Iterator<? extends TypeMirror> i = typeArguments.iterator();
              for (TypeParameterElement typeParameter : typeParameters) {
                  boundTypes.put(typeParameter.toString(), resolveTypeReference(i.next(), boundTypes));
              }
          }
  
          return boundTypes;
      }