# Package com.saxonica.xsltextn.pedigree

This package contains classes associated with the implementation of the `saxon:deep-update` extension instruction.

This instruction uses a special implementation of maps in which navigation through a tree of maps maintains information about the route by which the leaf maps were reached. This information is referred to as a pedigree. The data structure used is analogous to the concept of a "zipper" found in some functional programming languages. By maintaining the connection between the root of a tree and the leaves, it becomes possible for an update to the leaves of the tree to be propagated upwards, resulting in a new version of the object at the root of the tree.

- Interface Summary
  Interface | Description
  --- | ---
  PedigreeValue | A `PedigreeValue` is a map or array together with a `Pedigree` indicating how that map or array was selected within a JSON-like tree structure.

- Class Summary
  Class | Description
  --- | ---
  DelegatingArrayItem | A `DelegatingArrayItem` is an abstract class representing an array that is implemented by delegating all array-related functionality to a base class.
  DelegatingMapItem | A `DelegatingMapItem` is an abstract class representing a map that is implemented by delegating all map-related functionality to another map.
  Pedigree | A `Pedigree` is transient information relating to a map or array indicating the route by which it was reached; it thus compensates for the absence of parent pointers in a JSON-like tree, by allowing the steps used to reach a map or array in such a structure to be retraced.
  PedigreeArrayItem | A `PedigreeArrayItem` represents an XDM array together with a `Pedigree`: that is, retained information about how the array was selected with a JSON-like tree.
  PedigreeMapItem | A `PedigreeMapItem` represents an XDM map together with a `Pedigree`: that is, retained information about how the map was selected within a JSON-like tree.