private function fixPowToExponentiation(Tokens $tokens, $functionNameIndex, $openParenthesisIndex, $closeParenthesisIndex, array $arguments)
    {
        // find the argument separator ',' directly after the last token of the first argument;
        // replace it with T_POW '**'
        $tokens[$tokens->getNextTokenOfKind(reset($arguments), [','])] = new Token([T_POW, '**']);

        // clean up the function call tokens prt. I
        $tokens->clearAt($closeParenthesisIndex);
        $previousIndex = $tokens->getPrevMeaningfulToken($closeParenthesisIndex);
        if ($tokens[$previousIndex]->equals(',')) {
            $tokens->clearAt($previousIndex); // trailing ',' in function call (PHP 7.3)
        }

        $added = 0;
        // check if the arguments need to be wrapped in parenthesis
        foreach (array_reverse($arguments, true) as $argumentStartIndex => $argumentEndIndex) {
            if ($this->isParenthesisNeeded($tokens, $argumentStartIndex, $argumentEndIndex)) {
                $tokens->insertAt($argumentEndIndex + 1, new Token(')'));
                $tokens->insertAt($argumentStartIndex, new Token('('));
                $added += 2;
            }
        }

        // clean up the function call tokens prt. II
        $tokens->clearAt($openParenthesisIndex);
        $tokens->clearAt($functionNameIndex);

        $prev = $tokens->getPrevMeaningfulToken($functionNameIndex);
        if ($tokens[$prev]->isGivenKind(T_NS_SEPARATOR)) {
            $tokens->clearAt($prev);
        }

        return $added;
    }
private function fixPowToExponentiation(Tokens $tokens, $functionNameIndex, $openParenthesisIndex, $closeParenthesisIndex, array $arguments)
    {
        
        
        $tokens[$tokens->getNextTokenOfKind(reset($arguments), [','])] = new Token([T_POW, '**']);

        
        $tokens->clearAt($closeParenthesisIndex);
        $previousIndex = $tokens->getPrevMeaningfulToken($closeParenthesisIndex);
        if ($tokens[$previousIndex]->equals(',')) {
            $tokens->clearAt($previousIndex); 
        }

        $added = 0;
        
        foreach (array_reverse($arguments, true) as $argumentStartIndex => $argumentEndIndex) {
            if ($this->isParenthesisNeeded($tokens, $argumentStartIndex, $argumentEndIndex)) {
                $tokens->insertAt($argumentEndIndex + 1, new Token(')'));
                $tokens->insertAt($argumentStartIndex, new Token('('));
                $added += 2;
            }
        }

        
        $tokens->clearAt($openParenthesisIndex);
        $tokens->clearAt($functionNameIndex);

        $prev = $tokens->getPrevMeaningfulToken($functionNameIndex);
        if ($tokens[$prev]->isGivenKind(T_NS_SEPARATOR)) {
            $tokens->clearAt($prev);
        }

        return $added;
    }
private function fixPowToExponentiation ( Tokens $ tokens , $ functionNameIndex , $ openParenthesisIndex , $ closeParenthesisIndex , array $ arguments ) { // find the argument separator ',' directly after the last token of the first argument; // replace it with T_POW '**' $ tokens [ $ tokens -> getNextTokenOfKind ( reset ( $ arguments ) , [ ',' ] ) ] = new Token ( [ T_POW , '**' ] ) ; // clean up the function call tokens prt. I $ tokens -> clearAt ( $ closeParenthesisIndex ) ; $ previousIndex = $ tokens -> getPrevMeaningfulToken ( $ closeParenthesisIndex ) ; if ( $ tokens [ $ previousIndex ] -> equals ( ',' ) ) { $ tokens -> clearAt ( $ previousIndex ) ; // trailing ',' in function call (PHP 7.3) } $ added = 0 ; // check if the arguments need to be wrapped in parenthesis foreach ( array_reverse ( $ arguments , true ) as $ argumentStartIndex => $ argumentEndIndex ) { if ( $ this -> isParenthesisNeeded ( $ tokens , $ argumentStartIndex , $ argumentEndIndex ) ) { $ tokens -> insertAt ( $ argumentEndIndex + 1 , new Token ( ')' ) ) ; $ tokens -> insertAt ( $ argumentStartIndex , new Token ( '(' ) ) ; $ added += 2 ; } } // clean up the function call tokens prt. II $ tokens -> clearAt ( $ openParenthesisIndex ) ; $ tokens -> clearAt ( $ functionNameIndex ) ; $ prev = $ tokens -> getPrevMeaningfulToken ( $ functionNameIndex ) ; if ( $ tokens [ $ prev ] -> isGivenKind ( T_NS_SEPARATOR ) ) { $ tokens -> clearAt ( $ prev ) ; } return $ added ; }
@param Tokens         $tokens
@param int            $functionNameIndex
@param int            $openParenthesisIndex
@param int            $closeParenthesisIndex
@param array<int,int> $arguments

@return int number of tokens added to the collection
@param Tokens $tokens @param int $functionNameIndex @param int $openParenthesisIndex @param int $closeParenthesisIndex @param array<int int > $arguments