A template annotation that was correct, and a call site the analyser widened to mixed anyway.
/** @template T of object */
final class Collection { /* ... */ }
// this resolves
$orders->map(fn (Order $o) => $o->total); // Collection<Money>
// this does not
$class = $this->resolveClass($name); // string
$items = $this->repository->of($class); // Collection<mixed>
// the type parameter comes from a runtime string, and
// no annotation can bridge that.
A class name in a variable is where the type system ends, and the honest response is to stop annotating rather than to add a cast that lies. The three places this happens are all a plugin-style registry, and each got a @phpstan-ignore with a sentence explaining that the type genuinely is not knowable.