This needs to be a static method because typically the ghost slice has been disposed by the time it is called. Note that DataTree.AddAtomicNode either displays a layout of the object, or displays the ghost slice. If it displays a layout of the object, it adds to its input path first itself (the "obj" element), then the HVO of the object, then creates slices for the object. For ghost slice, it simply adds itself. Therefore, a slice created as part of a layout replacing a ghost slice will have a key matching the ghost slice's key, and followed by the ID of the new object. Next, anything in this layout will have the template used to display the object, and the particular part ref that invoked the part, then (for an interesting target) a slice node with editor 'string' or 'multistring' as appropriate. AddSeqNode is similar, except that it may display layouts of multiple objects.