docs: private Class<?>[] getGroup(Invocable invocable) {
          final List<Class<?>[]> groups = new ArrayList<>();
          for (Parameter parameter : invocable.getParameters()) {
              if (parameter.isAnnotationPresent(Validated.class)) {
                  groups.add(parameter.getAnnotation(Validated.class).value());
              }
          }
  
          switch (groups.size()) {
              // No parameters were annotated with Validated, so validate under the default group
              case 0: return new Class<?>[] {Default.class};
  
              // A single parameter was annotated with Validated, so use their group
              case 1: return groups.get(0);
  
              // Multiple parameters were annotated with Validated, so we must check if
              // all groups are equal to each other, if not, throw an exception because
              // the validator is unable to handle parameters validated under different
              // groups. If the parameters have the same group, we can grab the first
              // group.
              default:
                  for (int i = 0; i < groups.size(); i++) {
                      for (int j = i; j < groups.size(); j++) {
                          if (!Arrays.deepEquals(groups.get(i), groups.get(j))) {
                              throw new WebApplicationException("Parameters must have the same validation groups in " +
                                  invocable.getHandlingMethod().getName(), 500);
                          }
                      }
                  }
                  return groups.get(0);
          }
      }