docs: private Map<String, SpringResource> analyzeController(Class<?> controllerClazz, Map<String, SpringResource> resourceMap, String description) {
  	String[] controllerRequestMappingValues = SpringUtils.getControllerResquestMapping(controllerClazz);
  
          // Iterate over all value attributes of the class-level RequestMapping annotation
          for (String controllerRequestMappingValue : controllerRequestMappingValues) {
              for (Method method : controllerClazz.getMethods()) {
                  // Skip methods introduced by compiler
                  if (method.isSynthetic()) {
                      continue;
                  }
                  RequestMapping methodRequestMapping = findMergedAnnotation(method, RequestMapping.class);
  
                  // Look for method-level @RequestMapping annotation
                  if (methodRequestMapping != null) {
                      RequestMethod[] requestMappingRequestMethods = methodRequestMapping.method();
  
                      // For each method-level @RequestMapping annotation, iterate over HTTP Verb
                      for (RequestMethod requestMappingRequestMethod : requestMappingRequestMethods) {
                          String[] methodRequestMappingValues = methodRequestMapping.value();
  
                          // Check for cases where method-level @RequestMapping#value is not set, and use the controllers @RequestMapping
                          if (methodRequestMappingValues.length == 0) {
                              // The map key is a concat of the following:
                              //   1. The controller package
                              //   2. The controller class name
                              //   3. The controller-level @RequestMapping#value
                              String resourceKey = controllerClazz.getCanonicalName() + controllerRequestMappingValue + requestMappingRequestMethod;
                              if (!resourceMap.containsKey(resourceKey)) {
                                  resourceMap.put(
                                          resourceKey,
                                          new SpringResource(controllerClazz, controllerRequestMappingValue, resourceKey, description));
                              }
                              resourceMap.get(resourceKey).addMethod(method);
                          } else {
                              // Here we know that method-level @RequestMapping#value is populated, so
                              // iterate over all the @RequestMapping#value attributes, and add them to the resource map.
                              for (String methodRequestMappingValue : methodRequestMappingValues) {
                                  String resourceKey = controllerClazz.getCanonicalName() + controllerRequestMappingValue
                                          + methodRequestMappingValue + requestMappingRequestMethod;
                                  if (!methodRequestMappingValue.isEmpty()) {
                                      if (!resourceMap.containsKey(resourceKey)) {
                                          resourceMap.put(resourceKey, new SpringResource(controllerClazz, methodRequestMappingValue, resourceKey, description));
                                      }
                                      resourceMap.get(resourceKey).addMethod(method);
                                  }
                              }
                          }
                      }
                  }
              }
          }
          controllerClazz.getFields();
          controllerClazz.getDeclaredFields(); //<--In case developer declares a field without an associated getter/setter.
          //this will allow NoClassDefFoundError to be caught before it triggers bamboo failure.
  
          return resourceMap;
      }