code: protected function applyFix(\SplFileInfo $file, Tokens $tokens)
      {
          $namespaceUseAnalyzer = new NamespaceUsesAnalyzer();
  
          $shortNames = [];
          foreach ($namespaceUseAnalyzer->getDeclarationsFromTokens($tokens) as $namespaceUseAnalysis) {
              $shortNames[strtolower($namespaceUseAnalysis->getShortName())] = '\\'.strtolower($namespaceUseAnalysis->getFullName());
          }
  
          foreach ($tokens as $index => $token) {
              if (!$token->isGivenKind(T_DOC_COMMENT)) {
                  continue;
              }
  
              $functionIndex = $this->findDocumentedFunction($tokens, $index);
              if (null === $functionIndex) {
                  continue;
              }
  
              $docBlock = new DocBlock($token->getContent());
  
              $openingParenthesisIndex = $tokens->getNextTokenOfKind($functionIndex, ['(']);
              $closingParenthesisIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $openingParenthesisIndex);
  
              $argumentsInfo = $this->getArgumentsInfo(
                  $tokens,
                  $openingParenthesisIndex + 1,
                  $closingParenthesisIndex - 1
              );
  
              foreach ($docBlock->getAnnotationsOfType('param') as $annotation) {
                  if (0 === Preg::match('/@param(?:\s+[^\$]\S+)?\s+(\$\S+)/', $annotation->getContent(), $matches)) {
                      continue;
                  }
  
                  $argumentName = $matches[1];
  
                  if (
                      !isset($argumentsInfo[$argumentName])
                      || $this->annotationIsSuperfluous($annotation, $argumentsInfo[$argumentName], $shortNames)
                  ) {
                      $annotation->remove();
                  }
              }
  
              $returnTypeInfo = $this->getReturnTypeInfo($tokens, $closingParenthesisIndex);
  
              foreach ($docBlock->getAnnotationsOfType('return') as $annotation) {
                  if ($this->annotationIsSuperfluous($annotation, $returnTypeInfo, $shortNames)) {
                      $annotation->remove();
                  }
              }
  
              $tokens[$index] = new Token([T_DOC_COMMENT, $docBlock->getContent()]);
          }
      }
docs: {@inheritdoc}