code: public function mainAction(ServerRequestInterface $request) : ResponseInterface
      {
          /** @var ResponseInterface $response */
          $response = func_num_args() === 2 ? func_get_arg(1) : null;
  
          $this->languageService->includeLLFile('EXT:image_autoresize/Resources/Private/Language/locallang_mod.xlf');
          $this->processData();
  
          $formTag = '<form action="" method="post" name="editform" id="EditDocumentController">';
  
          $this->moduleTemplate->setForm($formTag);
  
          $this->content .= sprintf('<h3>%s</h3>', htmlspecialchars($this->languageService->getLL('title')));
          $this->addStatisticsAndSocialLink();
  
          // Generate the content
          $this->moduleContent($this->config);
  
          // Compile document
          $this->addToolbarButtons();
          $this->moduleTemplate->setContent($this->content);
          $content = $this->moduleTemplate->renderContent();
  
          if ($response !== null) {
              $response->getBody()->write($content);
          } else {
              // Behaviour in TYPO3 v9
              $response = new HtmlResponse($content);
          }
  
          return $response;
      }
docs: Injects the request object for the current request or subrequest
  As this controller goes only through the main() method, it is rather simple for now
  
  @param ServerRequestInterface $request the current request
  @return ResponseInterface the response with the content