A perhaps overly clever way to define `pinv_type` is:

```julia
_pinv_type(p::Plan) = typeof([plan_inv(x) for x in typeof(p)[]])
pinv_type(p::Plan) = eltype(_pinv_type(p))
```

This is split out into two functions to take advantage of a useful bug in type inference that avoids executing `_pinv_type` at all. If that bug gets fixed, it would still work, but it would have construct the empty arrays.