public function invoke(DocumentationInterface $parent, string $documentation): void
    {
        try {
            $this->tokenConsumer->initialize();

            $this->annotationLexer->setInput($documentation);
            $this->annotationLexer->moveNext();
            $this->annotationLexer->moveNext();

            while ($this->annotationLexer->token) {
                $this->parse(
                    $this->annotationLexer->token['type'],
                    $this->annotationLexer->token['value']
                );
                $this->annotationLexer->moveNext();
                $this->annotationLexer->moveNext();
            }

            $this->tokenConsumer->finalize();

            $this->annotationRegister->invoke($parent, $this->tokenConsumer->getParsedAnnotations());
        } catch (AnnotationParseException $exception) {
            throw new AnnotationParseException($exception->getMessage());
        }
    }