docs: public void introspectPathParams() throws DeploymentException {
  
          //Section 4.3 JSR 356 - The allowed types for the @PathParam parameters are String, any Java primitive type, or boxed version thereof.
          Class<?>[] pathParamTypesAllowed = { String.class, char.class, Character.class, byte.class, Byte.class, short.class, Short.class, int.class, Integer.class, long.class,
                                              Long.class, float.class, Float.class, double.class, Double.class, boolean.class, Boolean.class };
          List<Class<?>> pathParamTypeList = Arrays.asList(pathParamTypesAllowed);
          Class<?>[] paramTypes = method.getParameterTypes();
          Annotation[][] paramAnnotations = method.getParameterAnnotations();
          boolean uriSegmentMatched = true;
  
          for (int i = 0; i < paramAnnotations.length; i++) {
              for (Annotation annotation : paramAnnotations[i]) {
                  if (annotation.annotationType() == javax.websocket.server.PathParam.class) {
                      if (pathParamTypeList.contains(paramTypes[i])) {
                          String pathParamValue = ((PathParam) annotation).value();
                          if (pathParamValue != null && !(pathParamValue.isEmpty())) {
                              //check if user has defined @PathParam variable on a method,but there is no corresponding matching path segment in endpoint path
                              //for e.g user might have defined "@PathParam("Boolean-var") Boolean BooleanVar" on onOpen() and the server endpoint path
                              //is /somePath/{Integer-var}/{Long-var}
                              List<String> segments = Arrays.asList(endpointPath.split("/"));
                              if (!(segments.contains("{" + pathParamValue + "}")) && !(segments.contains(pathParamValue))) {
                                  //error case: @PathParam does not match any path segment in the uri
                                  if (tc.isDebugEnabled()) {
                                      String msg = "@PathParam parameter " + pathParamValue + " defined on the method " + method.getName()
                                                   + " does not have corresponding path segment in @ServerEndpoint URI in Annotated endpoint " + method.getDeclaringClass().getName();
                                      Tr.debug(tc, msg);
                                  }
                                  //set the parameter to null. This is needed for String type of param.
                                  uriSegmentMatched = false;
                              }
                              //create PathParamData with annotation, the parameter index which has @PathParam declared, type of the parameter. 
                              PathParamData paramData = new PathParamDataImpl(pathParamValue, i, paramTypes[i], uriSegmentMatched);
                              //use key for the hashmap as parameter index which has @PathParam declared, so that we can retrieve the correct PathParamData
                              //during parameter value substitution
                              methodData.getPathParams().put(Integer.valueOf(i), paramData);
                          }
                          else {
                              //section 4.3 jsr 356. The value attribute of this annotation must be present otherwise the implementation must throw an  error. [WSC-4.3-2]
                              String msg = Tr.formatMessage(tc,
                                                            "missing.pathparam.value",
                                                            ((PathParam) annotation).value(), method.getName(), method.getDeclaringClass().getName());
                              Tr.error(tc,
                                       "missing.pathparam.value",
                                       ((PathParam) annotation).value(), method.getName(), method.getDeclaringClass().getName());
                              throw new DeploymentException(msg);
                          }
                      } else {
                          //section 4.3 jsr 356. "The allowed types for the @PathParam parameters are String, any Java primitive type, or boxed version thereof. Any other type 
                          //annotated with this annotation is an error that the implementation must report at deployment time. [WSC-4.3-1]"
                          String msg = Tr.formatMessage(tc,
                                                        "invalid.pathparam.type",
                                                        ((PathParam) annotation).value(), method.getName(), method.getDeclaringClass().getName());
                          Tr.error(tc,
                                   "invalid.pathparam.type",
                                   ((PathParam) annotation).value(), method.getName(), method.getDeclaringClass().getName());
                          throw new DeploymentException(msg);
                      }
                  }
              }
          }
      }