3 class Derived
extends Base
{
4 public function __construct(public int $v) {}
7 public static function foo(T
$v): void
{}
9 class Concrete
extends Cov
<Derived
> {
11 public static function foo(Derived
$v): void
{
17 public static function foo(classname
<Concrete
> $z): void
{
20 public static function bar(classname
<Cov
<Base
>> $y): void
{
21 $y::foo(new Base()); // Concrete::foo tries to coax an `int $v` out of Base!
22 // It's not very effective.
26 //Violate::foo(Concrete::class);