private function fixAssert(array $map, Tokens $tokens, $index, $method)
    {
        $sequence = $tokens->findSequence(
            [
                [T_STRING, $method],
                '(',
            ],
            $index
        );

        if (null === $sequence) {
            return null;
        }

        $sequenceIndexes = array_keys($sequence);
        $operatorIndex = $tokens->getPrevMeaningfulToken($sequenceIndexes[0]);
        $referenceIndex = $tokens->getPrevMeaningfulToken($operatorIndex);
        if (
            !($tokens[$operatorIndex]->equals([T_OBJECT_OPERATOR, '->']) && $tokens[$referenceIndex]->equals([T_VARIABLE, '$this']))
            && !($tokens[$operatorIndex]->equals([T_DOUBLE_COLON, '::']) && $tokens[$referenceIndex]->equals([T_STRING, 'self']))
            && !($tokens[$operatorIndex]->equals([T_DOUBLE_COLON, '::']) && $tokens[$referenceIndex]->equals([T_STATIC, 'static']))
        ) {
            return null;
        }

        $sequenceIndexes[2] = $tokens->getNextMeaningfulToken($sequenceIndexes[1]);
        $firstParameterToken = $tokens[$sequenceIndexes[2]];

        if (!$firstParameterToken->isNativeConstant()) {
            return $sequenceIndexes[2];
        }

        $sequenceIndexes[3] = $tokens->getNextMeaningfulToken($sequenceIndexes[2]);

        // return if first method argument is an expression, not value
        if (!$tokens[$sequenceIndexes[3]]->equals(',')) {
            return $sequenceIndexes[3];
        }

        $tokens[$sequenceIndexes[0]] = new Token([T_STRING, $map[strtolower($firstParameterToken->getContent())]]);
        $tokens->clearRange($sequenceIndexes[2], $tokens->getNextNonWhitespace($sequenceIndexes[3]) - 1);

        return $sequenceIndexes[3];
    }
private function fixAssert(array $map, Tokens $tokens, $index, $method)
    {
        $sequence = $tokens->findSequence(
            [
                [T_STRING, $method],
                '(',
            ],
            $index
        );

        if (null === $sequence) {
            return null;
        }

        $sequenceIndexes = array_keys($sequence);
        $operatorIndex = $tokens->getPrevMeaningfulToken($sequenceIndexes[0]);
        $referenceIndex = $tokens->getPrevMeaningfulToken($operatorIndex);
        if (
            !($tokens[$operatorIndex]->equals([T_OBJECT_OPERATOR, '->']) && $tokens[$referenceIndex]->equals([T_VARIABLE, '$this']))
            && !($tokens[$operatorIndex]->equals([T_DOUBLE_COLON, '::']) && $tokens[$referenceIndex]->equals([T_STRING, 'self']))
            && !($tokens[$operatorIndex]->equals([T_DOUBLE_COLON, '::']) && $tokens[$referenceIndex]->equals([T_STATIC, 'static']))
        ) {
            return null;
        }

        $sequenceIndexes[2] = $tokens->getNextMeaningfulToken($sequenceIndexes[1]);
        $firstParameterToken = $tokens[$sequenceIndexes[2]];

        if (!$firstParameterToken->isNativeConstant()) {
            return $sequenceIndexes[2];
        }

        $sequenceIndexes[3] = $tokens->getNextMeaningfulToken($sequenceIndexes[2]);

        
        if (!$tokens[$sequenceIndexes[3]]->equals(',')) {
            return $sequenceIndexes[3];
        }

        $tokens[$sequenceIndexes[0]] = new Token([T_STRING, $map[strtolower($firstParameterToken->getContent())]]);
        $tokens->clearRange($sequenceIndexes[2], $tokens->getNextNonWhitespace($sequenceIndexes[3]) - 1);

        return $sequenceIndexes[3];
    }
private function fixAssert ( array $ map , Tokens $ tokens , $ index , $ method ) { $ sequence = $ tokens -> findSequence ( [ [ T_STRING , $ method ] , '(' , ] , $ index ) ; if ( null === $ sequence ) { return null ; } $ sequenceIndexes = array_keys ( $ sequence ) ; $ operatorIndex = $ tokens -> getPrevMeaningfulToken ( $ sequenceIndexes [ 0 ] ) ; $ referenceIndex = $ tokens -> getPrevMeaningfulToken ( $ operatorIndex ) ; if ( ! ( $ tokens [ $ operatorIndex ] -> equals ( [ T_OBJECT_OPERATOR , '->' ] ) && $ tokens [ $ referenceIndex ] -> equals ( [ T_VARIABLE , '$this' ] ) ) && ! ( $ tokens [ $ operatorIndex ] -> equals ( [ T_DOUBLE_COLON , '::' ] ) && $ tokens [ $ referenceIndex ] -> equals ( [ T_STRING , 'self' ] ) ) && ! ( $ tokens [ $ operatorIndex ] -> equals ( [ T_DOUBLE_COLON , '::' ] ) && $ tokens [ $ referenceIndex ] -> equals ( [ T_STATIC , 'static' ] ) ) ) { return null ; } $ sequenceIndexes [ 2 ] = $ tokens -> getNextMeaningfulToken ( $ sequenceIndexes [ 1 ] ) ; $ firstParameterToken = $ tokens [ $ sequenceIndexes [ 2 ] ] ; if ( ! $ firstParameterToken -> isNativeConstant ( ) ) { return $ sequenceIndexes [ 2 ] ; } $ sequenceIndexes [ 3 ] = $ tokens -> getNextMeaningfulToken ( $ sequenceIndexes [ 2 ] ) ; // return if first method argument is an expression, not value if ( ! $ tokens [ $ sequenceIndexes [ 3 ] ] -> equals ( ',' ) ) { return $ sequenceIndexes [ 3 ] ; } $ tokens [ $ sequenceIndexes [ 0 ] ] = new Token ( [ T_STRING , $ map [ strtolower ( $ firstParameterToken -> getContent ( ) ) ] ] ) ; $ tokens -> clearRange ( $ sequenceIndexes [ 2 ] , $ tokens -> getNextNonWhitespace ( $ sequenceIndexes [ 3 ] ) - 1 ) ; return $ sequenceIndexes [ 3 ] ; }
@param array<string, string> $map
@param Tokens                $tokens
@param int                   $index
@param string                $method

@return null|int
@param array<string string > $map @param Tokens $tokens @param int $index @param string $method