code: private function prepareArgumentInformation(Tokens $tokens, $start, $end)
      {
          $info = [
              'default' => '',
              'name' => '',
              'type' => '',
          ];
  
          $sawName = false;
  
          for ($index = $start; $index <= $end; ++$index) {
              $token = $tokens[$index];
  
              if ($token->isComment() || $token->isWhitespace()) {
                  continue;
              }
  
              if ($token->isGivenKind(T_VARIABLE)) {
                  $sawName = true;
                  $info['name'] = $token->getContent();
  
                  continue;
              }
  
              if ($token->equals('=')) {
                  continue;
              }
  
              if ($sawName) {
                  $info['default'] .= $token->getContent();
              } elseif ('&' !== $token->getContent()) {
                  if ($token->isGivenKind(T_ELLIPSIS)) {
                      if ('' === $info['type']) {
                          $info['type'] = 'array';
                      } else {
                          $info['type'] .= '[]';
                      }
                  } else {
                      $info['type'] .= $token->getContent();
                  }
              }
          }
  
          return $info;
      }
docs: @param Tokens $tokens
  @param int    $start
  @param int    $end
  
  @return array