$checks */ public function __construct(private readonly iterable $checks) { } public function getFirstUnresolvedCheck(User $user): ?RequiredTeamerCheckInterface { foreach ($this->checks as $check) { if (false === $check->appliesTo($user)) { continue; } if (false === $check->isSatisfied($user)) { return $check; } } return null; } }