```php /** * @psalm-template T * @psalm-param mixed $value * @psalm-param Context $context * @psalm-param string|null $message * @psalm-return ValidationFailures<T> * * @param mixed $value */ public static function failure($value, Context $context, ?string $message = null): self { return self::failures( [new VError($value, $context, $message)] ); } ``` This constructor will never infer correctly `Validation<T>`.