docs: protected static void pushTypeArguments(GeneratorAdapter generatorAdapter, Map<String, Object> types) {
          if (types == null || types.isEmpty()) {
              generatorAdapter.visitInsn(ACONST_NULL);
              return;
          }
          int len = types.size();
          // Build calls to Argument.create(...)
          pushNewArray(generatorAdapter, Argument.class, len);
          int i = 0;
          for (Map.Entry<String, Object> entry : types.entrySet()) {
              // the array index
              generatorAdapter.push(i);
              String typeParameterName = entry.getKey();
              Object value = entry.getValue();
              if (value instanceof Map) {
                  buildArgumentWithGenerics(generatorAdapter, typeParameterName, (Map) value);
              } else {
                  buildArgument(generatorAdapter, typeParameterName, value);
              }
  
              // store the type reference
              generatorAdapter.visitInsn(AASTORE);
              // if we are not at the end of the array duplicate array onto the stack
              if (i != (len - 1)) {
                  generatorAdapter.visitInsn(DUP);
              }
              i++;
          }
      }