Another option is the user defining a new struct which is a subtype of InitialValueProblem and has a OrdinaryDiffEq.ODEProblem inside it, and extends for this new struct any of the functions you expect to work on a InitialValueProblem subtype.
Another option is the user defining a new struct which is a subtype of InitialValueProblem and has a OrdinaryDiffEq.ODEProblem inside it, and extends for this new struct any of the functions you expect to work on a InitialValueProblem subtype.