code: void analyze(final MethodResult methodResult) {
          lock.lock();
          try {
              buildPackagePrefix(methodResult.getParentResource().getOriginalClass());
  
              final List<Instruction> visitedInstructions = interpretRelevantInstructions(methodResult.getInstructions());
  
              // find project defined methods in invoke occurrences
              final Set<ProjectMethod> projectMethods = findProjectMethods(visitedInstructions);
  
              // add project methods to global method pool
              projectMethods.forEach(MethodPool.getInstance()::addProjectMethod);
  
              Element returnedElement = new MethodSimulator().simulate(visitedInstructions);
              final String returnType = methodResult.getOriginalMethodSignature().getReturnType();
  
              // void resource methods are interpreted later; stop analyzing on error
              if (Types.PRIMITIVE_VOID.equals(returnType)) {
                  return;
              }
  
              if (returnedElement == null) {
                  // happens for abstract methods or if there is no return
                  return;
              }
  
              final Set<Object> possibleObjects = returnedElement.getPossibleValues().stream().filter(o -> !(o instanceof HttpResponse))
                      .collect(Collectors.toSet());
  
              // for non-Response methods add a default if there are non-Response objects or none objects at all
              if (!Types.RESPONSE.equals(returnType)) {
                  final HttpResponse defaultResponse = new HttpResponse();
  
                  if (Types.OBJECT.equals(returnType))
                      defaultResponse.getEntityTypes().addAll(returnedElement.getTypes());
                  else
                      defaultResponse.getEntityTypes().add(returnType);
  
                  possibleObjects.stream().filter(o -> o instanceof JsonValue).map(o -> (JsonValue) o).forEach(defaultResponse.getInlineEntities()::add);
  
                  defaultResponse.getContentTypes().addAll(methodResult.getResponseMediaTypes());
  
                  methodResult.getResponses().add(defaultResponse);
              }
  
              // add Response results as well
              returnedElement.getPossibleValues().stream().filter(o -> o instanceof HttpResponse).map(o -> (HttpResponse) o).forEach(methodResult.getResponses()::add);
          } finally {
              lock.unlock();
          }
      }
docs: Analyzes the method (including own project methods).
  
  @param methodResult The method result