> $availableRules
* @return array>
*/
public static function resolve(int $level, array $availableRules, string $methodName) : array
{
// level < 0 is not allowed
Assert::natural($level, \sprintf('Level must be >= 0 on %s', $methodName));
Assert::allIsAOf($availableRules, RectorInterface::class);
$rulesCount = \count($availableRules);
if ($availableRules === []) {
throw new ShouldNotHappenException(\sprintf('There are no available rules in "%s()", define the available rules first', $methodName));
}
// start with 0
$maxLevel = $rulesCount - 1;
if ($level > $maxLevel) {
$level = $maxLevel;
}
$levelRules = [];
for ($i = 0; $i <= $level; ++$i) {
$levelRules[] = $availableRules[$i];
}
return $levelRules;
}
}