public function addComment(
        $source,
        $context,
        $content,
        $authorToken,
        $authorName,
        $authorEmail,
        CommentInterface $parent = null
    ) {
        $comment = $this
            ->commentDirector
            ->create()
            ->setId(round(microtime(true) * 1000))
            ->setParent($parent)
            ->setSource($source)
            ->setAuthorToken($authorToken)
            ->setAuthorName($authorName)
            ->setAuthorEmail($authorEmail)
            ->setContent($content)
            ->setContext($context);

        $this
            ->commentDirector
            ->save($comment);

        $this
            ->commentEventDispatcher
            ->dispatchCommentOnAddEvent($comment);

        return $comment;
    }