     set target, cursorSymbol, cursor
 
 
-  # recursively clear changes along a path
-  # return the last node along that path
+  # recursively clear changes along a path, pruning nodes as stack unwinds
+  # return the last node along the path
 
   clearPath = (node, key, parent, path) ->
     return unless node?

    clearPath @root, null, null, path


  # recursively clear changes made by merge

  clearObject = (node, key, parent, changes) ->
    for k of changes

        clearObject child, node, k, changes[k]
        del parent, key if parent? and empty child

  clearObject: (path, obj) ->
    target = @clearPath path
    return unless target?

    clearObject target, null, null, obj


