In the following simple stylised script,

```
mutable struct P <: AbstractP
this
that
end
p = P()
...
sol1 = optimal(p)
q = p
p = add(p, something) # p changed
sol2 = optimal(p)
p = q
sol3 = optimal(p)
```

would like that sol3 = sol1, but instead got sol3 = sol2. Unfortunatelly, it is still not clear what I should do to get the desired result, that sol3 = sol1? Many thanks!