code: public function findGivenKind($possibleKind, $start = 0, $end = null)
      {
          $this->rewind();
          if (null === $end) {
              $end = $this->count();
          }
  
          $elements = [];
          $possibleKinds = (array) $possibleKind;
  
          foreach ($possibleKinds as $kind) {
              $elements[$kind] = [];
          }
  
          if (!self::isLegacyMode()) {
              $possibleKinds = array_filter($possibleKinds, function ($kind) {
                  return $this->isTokenKindFound($kind);
              });
          }
  
          if (\count($possibleKinds)) {
              for ($i = $start; $i < $end; ++$i) {
                  $token = $this[$i];
                  if ($token->isGivenKind($possibleKinds)) {
                      $elements[$token->getId()][$i] = $token;
                  }
              }
          }
  
          return \is_array($possibleKind) ? $elements : $elements[$possibleKind];
      }
docs: @param array|int $possibleKind kind or array of kind
  @param int       $start        optional offset
  @param null|int  $end          optional limit
  
  @return array array of tokens of given kinds or assoc array of arrays