code: public function getFunctionReturnType(Tokens $tokens, $methodIndex)
      {
          $argumentsStart = $tokens->getNextTokenOfKind($methodIndex, ['(']);
          $argumentsEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $argumentsStart);
          $typeColonIndex = $tokens->getNextMeaningfulToken($argumentsEnd);
          if (':' !== $tokens[$typeColonIndex]->getContent()) {
              return null;
          }
  
          $type = '';
          $typeStartIndex = $tokens->getNextNonWhitespace($typeColonIndex);
          $typeEndIndex = $typeStartIndex;
          $functionBodyStart = $tokens->getNextTokenOfKind($typeColonIndex, ['{', ';']);
          for ($i = $typeStartIndex; $i < $functionBodyStart; ++$i) {
              if ($tokens[$i]->isWhitespace()) {
                  continue;
              }
  
              $type .= $tokens[$i]->getContent();
              $typeEndIndex = $i;
          }
  
          return new TypeAnalysis($type, $typeStartIndex, $typeEndIndex);
      }
docs: @param Tokens $tokens
  @param int    $methodIndex
  
  @return null|TypeAnalysis