Is it possible to write something along the lines of `ScaledPlan{P<:Plan{T}} <: Plan{T}; p::P; ......; end`?    Otherwise I don't know how to make `ScaledPlan` a subtype of the correct `T` for `Plan{T}`.