docs: public static Parameter getParameter(int index, Annotation[] anns, Class<?> type) {
  
          Context ctx = AnnotationUtils.getAnnotation(anns, Context.class);
          if (ctx != null) {
              return new Parameter(ParameterType.CONTEXT, index, null);
          }
  
          boolean isEncoded = AnnotationUtils.getAnnotation(anns, Encoded.class) != null;
  
          BeanParam bp = AnnotationUtils.getAnnotation(anns, BeanParam.class);
          if (bp != null) {
              return new Parameter(ParameterType.BEAN, index, null, isEncoded, null);
          }
  
          String dValue = AnnotationUtils.getDefaultParameterValue(anns);
  
          PathParam a = AnnotationUtils.getAnnotation(anns, PathParam.class);
          if (a != null) {
              return new Parameter(ParameterType.PATH, index, a.value(), isEncoded, dValue);
          }
          QueryParam q = AnnotationUtils.getAnnotation(anns, QueryParam.class);
          if (q != null) {
              return new Parameter(ParameterType.QUERY, index, q.value(), isEncoded, dValue);
          }
          MatrixParam m = AnnotationUtils.getAnnotation(anns, MatrixParam.class);
          if (m != null) {
              return new Parameter(ParameterType.MATRIX, index, m.value(), isEncoded, dValue);
          }
  
          FormParam f = AnnotationUtils.getAnnotation(anns, FormParam.class);
          if (f != null) {
              return new Parameter(ParameterType.FORM, index, f.value(), isEncoded, dValue);
          }
  
          HeaderParam h = AnnotationUtils.getAnnotation(anns, HeaderParam.class);
          if (h != null) {
              return new Parameter(ParameterType.HEADER, index, h.value(), isEncoded, dValue);
          }
  
          CookieParam c = AnnotationUtils.getAnnotation(anns, CookieParam.class);
          if (c != null) {
              return new Parameter(ParameterType.COOKIE, index, c.value(), isEncoded, dValue);
          }
  
          return new Parameter(ParameterType.REQUEST_BODY, index, null);
  
      }