private function getSetterIndiciesFromInlineArray()

in src/Fixers/ClientUpgradeFixer/RpcMethod.php [100:123]


    private function getSetterIndiciesFromInlineArray(Tokens $tokens, int $index, int $closeIndex)
    {
        $arrayEntries = $tokens->findGivenKind(T_DOUBLE_ARROW, $index, $closeIndex);
        $nestedArrays = $tokens->findGivenKind(CT::T_ARRAY_SQUARE_BRACE_OPEN, $index + 1, $closeIndex);
        $nestedLegacyArrays = $tokens->findGivenKind(T_ARRAY, $index + 1, $closeIndex);

        // skip nested arrays
        foreach ($arrayEntries as $doubleArrowIndex => $doubleArrowIndexToken) {
            foreach ($nestedArrays as $nestedArrayIndex => $nestedArrayIndexToken) {
                $nestedArrayCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_SQUARE_BRACE, $nestedArrayIndex);
                if ($doubleArrowIndex > $nestedArrayIndex && $doubleArrowIndex < $nestedArrayCloseIndex) {
                    unset($arrayEntries[$doubleArrowIndex]);
                }
            }
            foreach ($nestedLegacyArrays as $nestedLegacyArrayIndex => $nestedLegacyArrayIndexToken) {
                $nestedLegacyArrayCloseIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $nestedLegacyArrayIndex + 1);
                if ($doubleArrowIndex > $nestedLegacyArrayIndex && $doubleArrowIndex < $nestedLegacyArrayCloseIndex) {
                    unset($arrayEntries[$doubleArrowIndex]);
                }
            }
        }

        return array_keys($arrayEntries);
    }