When an unapply method like this is called and F is not explicitly given, then F can not be inferred correctly:
When an unapply method like this is called and F is not explicitly given, then F can not be inferred correctly:
HkdFor_[Foo][Option](???) match
case HkdFor_[Foo](a, b, c) => ??? // F is inferred as some unknown F$1 instead of Option
Because a type test introduces a level of indirection and the inference algorithm cannot "carry" the F through multiple levels of indirection. We need to apply the type test ourselves, so that we remain in control of type inference.