A first-class callable stored on a readonly property

A strategy passed to a constructor as a callable, which used to be a closure with a comment and is now something an analyser can check.

final readonly class RetryPolicy
{
    /** @param Closure(int): int $backoff */
    public function __construct(
        private Closure $backoff,
    ) {}
}

// and the call site
new RetryPolicy($this->exponentialBackoff(...));

The docblock is what makes the callable checkable, and without it the property is a Closure that could take anything. The first-class callable syntax matters here because an analyser can resolve $this->exponentialBackoff(...) to a real method and compare signatures, which it cannot do with a string or an array callable.