public function findNextToken($matcher)
    {
        $nextToken = $this->nextToken;
        while (null !== $nextToken) {
            if ($nextToken->matches($matcher)) {
                return new Some($nextToken);
            }

            $nextToken = $nextToken->nextToken;
        }

        return None::create();
    }