public function process(File $phpcsFile, $stackPtr)
    {
        $tokens = $phpcsFile->getTokens();

        $find   = Tokens::$methodPrefixes;
        $find[] = T_WHITESPACE;

        // if the comment contains a single tag; if it's @see or @inheritdoc
        // we can skip the rest of the comment validation
        $commentEnd = $phpcsFile->findPrevious($find, ($stackPtr - 1), null, true);
        if(isset($tokens[$commentEnd]['comment_opener']) === true) {
            $commentStart = $tokens[$commentEnd]['comment_opener'];
            if (count($tokens[$commentStart]['comment_tags']) === 1) {
                $allowedTokens = ['@see', '@inheritdoc'];
                $commentToken = $tokens[$tokens[$commentStart]['comment_tags'][0]];
                if (in_array(strtolower($commentToken['content']), $allowedTokens)) {
                    return;
                }
            }
        }

        parent::process($phpcsFile, $stackPtr);
    }
public function process(File $phpcsFile, $stackPtr)
    {
        $tokens = $phpcsFile->getTokens();

        $find   = Tokens::$methodPrefixes;
        $find[] = T_WHITESPACE;

        // if the comment contains a single tag; if it's @see or @inheritdoc
        // we can skip the rest of the comment validation
        $commentEnd = $phpcsFile->findPrevious($find, ($stackPtr - 1), null, true);
        if(isset($tokens[$commentEnd]['comment_opener']) === true) {
            $commentStart = $tokens[$commentEnd]['comment_opener'];
            if (count($tokens[$commentStart]['comment_tags']) === 1) {
                $allowedTokens = ['@see', '@inheritdoc'];
                $commentToken = $tokens[$tokens[$commentStart]['comment_tags'][0]];
                if (in_array(strtolower($commentToken['content']), $allowedTokens)) {
                    return;
                }
            }
        }

        parent::process($phpcsFile, $stackPtr);
    }
{@inheritdoc}