docs: public static void addContextHandlerMeta(final ContextHandlerMeta contextHandlerMeta) {
          final Method invokeHolder = contextHandlerMeta.getInvokeHolder();
          final Class<?> returnType = invokeHolder.getReturnType();
          final String methodName = invokeHolder.getDeclaringClass().getName() + "#" + invokeHolder.getName();
  
          if (!void.class.equals(returnType)) {
              LOGGER.error("Handler method [" + methodName + "] must return void");
              System.exit(-1);
          }
          final Class<?>[] exceptionTypes = invokeHolder.getExceptionTypes();
          if (0 < exceptionTypes.length) {
              LOGGER.error("Handler method [" + methodName + "] can not throw exceptions");
              System.exit(-1);
          }
          final Class<?>[] parameterTypes = invokeHolder.getParameterTypes();
          if (1 != parameterTypes.length) {
              LOGGER.error("Handler method [" + methodName + "] must have one parameter with type [RequestContext]");
              System.exit(-1);
          }
          final Class<?> parameterType = parameterTypes[0];
          if (!RequestContext.class.equals(parameterType)) {
              LOGGER.error("Handler method [" + methodName + "] must have one parameter with type [RequestContext]");
              System.exit(-1);
          }
  
          final HttpMethod[] httpMethods = contextHandlerMeta.getHttpMethods();
          for (int i = 0; i < httpMethods.length; i++) {
              final String httpMethod = httpMethods[i].name();
              final String[] uriTemplates = contextHandlerMeta.getUriTemplates();
              for (int j = 0; j < uriTemplates.length; j++) {
                  final String uriTemplate = uriTemplates[j];
                  final String key = httpMethod + "." + uriTemplate;
                  final int segs = StringUtils.countMatches(uriTemplate, "/");
                  if (!StringUtils.contains(uriTemplate, "{")) {
                      switch (segs) {
                          case 1:
                              ONE_SEG_CONCRETE_CTX_HANDLER_METAS.put(key, contextHandlerMeta);
                              break;
                          case 2:
                              TWO_SEG_CONCRETE_CTX_HANDLER_METAS.put(key, contextHandlerMeta);
                              break;
                          case 3:
                              THREE_SEG_CONCRETE_CTX_HANDLER_METAS.put(key, contextHandlerMeta);
                              break;
                          default:
                              FOUR_MORE_SEG_CONCRETE_CTX_HANDLER_METAS.put(key, contextHandlerMeta);
                      }
                  } else { // URI templates contain path vars
                      switch (segs) {
                          case 1:
                              switch (httpMethod) {
                                  case "GET":
                                      ONE_SEG_GET_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "POST":
                                      ONE_SEG_POST_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "PUT":
                                      ONE_SEG_PUT_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "DELETE":
                                      ONE_SEG_DELETE_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  default:
                                      ONE_SEG_OTHER_METHOD_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                              }
  
                              break;
                          case 2:
                              switch (httpMethod) {
                                  case "GET":
                                      TWO_SEG_GET_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "POST":
                                      TWO_SEG_POST_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "PUT":
                                      TWO_SEG_PUT_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "DELETE":
                                      TWO_SEG_DELETE_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  default:
                                      TWO_SEG_OTHER_METHOD_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                              }
  
                              break;
                          case 3:
                              switch (httpMethod) {
                                  case "GET":
                                      THREE_SEG_GET_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "POST":
                                      THREE_SEG_POST_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "PUT":
                                      THREE_SEG_PUT_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "DELETE":
                                      THREE_SEG_DELETE_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  default:
                                      THREE_SEG_OTHER_METHOD_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                              }
  
                              break;
                          default:
                              switch (httpMethod) {
                                  case "GET":
                                      FOUR_MORE_SEG_GET_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "POST":
                                      FOUR_MORE_SEG_POST_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "PUT":
                                      FOUR_MORE_SEG_PUT_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  case "DELETE":
                                      FOUR_MORE_SEG_DELETE_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                                      break;
                                  default:
                                      FOUR_MORE_SEG_OTHER_METHOD_VAR_CTX_HANDLER_METAS.put(uriTemplate, contextHandlerMeta);
                              }
                      }
                  }
              }
          }
  
          LOGGER.log(Level.DEBUG, "Added a processor method [" + methodName + "]");
      }