lexer = $lexer; $this->privatesAccessor = $privatesAccessor; } public function create(string $content) : \Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator { $tokens = $this->lexer->tokenize($content); return new \Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator($tokens); } public function createFromTokenIterator(\PHPStan\PhpDocParser\Parser\TokenIterator $tokenIterator) : \Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator { if ($tokenIterator instanceof \Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator) { return $tokenIterator; } $tokens = $this->privatesAccessor->getPrivateProperty($tokenIterator, 'tokens'); $betterTokenIterator = new \Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator($tokens); // keep original position $currentIndex = $this->privatesAccessor->getPrivateProperty($tokenIterator, 'index'); $this->privatesAccessor->setPrivateProperty($betterTokenIterator, self::INDEX, $currentIndex); return $betterTokenIterator; } }