*Cache and *ConstantCache versions of ODE solvers. What is the difference?

I was going through Rodas4 solver source code and found that there are 2 different implementations of this solver - Rodas4Cache and Rodas4ConstantCache. Is there any principal difference between these 2 variants?

It looks that for Rodas4ConstantCache (ODE case) the tgrad argument appears to be unused. Whereas for Rodas4Cache (DAE case which can be represented by ODE in mass matrix form) tgrad is called inside function calc_tderivative which in turn is called by function calc_rosenbrock_differentiation. There is selective use of tgrad argument. Was it designed to be like that? Could be that i am getting it wrong.

Will apprecate your input. @ChrisRackauckas

The cache versions are mutating and have all of the arrays cached in there, the non-cached versions are non-mutating and thus don’t cache anything. The non-cached versions should probably make use of tgrad, that’s worth adding. But the cached versions are usually more performance crucial anyways.