/**
  * @param array $serverParams
  * @return ServerRequest
  */
 public function makeServerRequest(array $serverParams)
 {
     // I have no idea why I need to type hint here, but phpstorm is complaining
     /** @var $serverRequest ServerRequest */
     $headers = Headers::createFromArray($serverParams);
     $cookies = Cookies::parseHeader($headers->get('Cookie', []));
     $serverRequest = new ServerRequest($serverParams, $cookies);
     $serverRequest = $serverRequest->withMethod($serverParams['REQUEST_METHOD']);
     $serverRequest = $serverRequest->withUri();
     foreach ($headers->all() as $header => $value) {
         $serverRequest = $serverRequest->withHeader($header, $value);
     }
     $serverRequest = $serverRequest->withUploadedFiles(UploadedFile::parseUploadedFiles($_FILES));
     return $serverRequest;
 }