docs: public static boolean methodParamsMatch(List<String> typeNames, Class<?>[] types)
      {
          if (typeNames.size() != types.length)
          {
              return false;
          }
  
          for (int i = 0; i < types.length; i++)
          {
              String typeName = typeNames.get(i);
              int typeNameEnd = typeName.length();
  
              Class<?> type = types[i];
              for (; type.isArray(); type = type.getComponentType())
              {
                  if (typeNameEnd < 2 ||
                      typeName.charAt(--typeNameEnd) != ']' ||
                      typeName.charAt(--typeNameEnd) != '[')
                  {
                      return false;
                  }
              }
  
              if (!type.getName().regionMatches(0, typeName, 0, typeNameEnd))
              {
                  return false;
              }
          }
  
          return true;
      }