Is it possible for the nested type not to care about context? If so, does it even make sense to call `update/4`? Why not always call `update/4` and pass `undefined` as the last argument?