It seems to me that if we pre-processed our "source" tree, and added keys with nil values wherever we find a subtree that contains input values, then deep_merge et al can remain unmodified.

Another option would be for the core to actually send nil values, for any input that has become unset. Then no RightLink changes are required. Need to talk to Scott to see if this is realistic.