Right, there’s a little more to it… kinda.
‘dependsOn’ doesn’t really support live collections explicitly. What it does is retain the values and iterate them at the latest possible time, regardless of whether they are live or not. This is in contrast to doing a defensive copy. This pattern (i.e. not doing a defensive copy) is used in quite a few places. The documentation for each method should indicate this in some way.
FWIW we aren’t really enamoured with this pattern. It proved powerful and useful to a point, but at a certain level of complexity it becomes hard to reason about. We are slowly moving in a different direction of using dependent functions instead of lazy data structures. This will be a slow, guided, transition though.