11.3.1 Subgrove-spec
The subgrove to be created is described using an object of type subgrove-spec.
(subgrove-spec #!key node: subgrove: class: add: null: remove: children: sub: label: sort-children:)
Returns an object of type subgrove-spec.
The node: argument shall be a singleton node-list; it specifies that the node at the root of the created subgrove shall have the same class as the value of node:, the same non-nodal, non-intrinsic properties as the value of node: (as modified by the add: and remove: arguments), and the same null-valued properties as the value of node: (except as modified by the null: and remove: arguments).
The subgrove: argument shall be a singleton node-list; it specifies the creation of a subgrove that is a copy of the subgrove rooted in the argument node.
The class: argument is a symbol specifying the class of the node to be created.  Exactly one of the node:, subgrove:, and class: arguments shall be specified.
The add: argument specifies non-nodal, non-intrinsic properties with non-null values that shall be added to the node.  The add: argument shall be a list of two-element lists whose first member is the name of a property and whose second member is the value of that property.  The property shall be a non-nodal, non-intrinsic property of the node's class.  The value for a property specified in the add: argument replaces any value for that property that the node specified by the node: argument had.
The null: argument is a list of symbols specifying the names of additional non-intrinsic properties of the node which shall have null values.  This replaces any non-null property which the node would have by virtue of the node: argument.
The remove: argument is a list of non-intrinsic properties which the node specified by the node: argument has and which the node to be created should not have; it defaults to the empty list. This may be used to remove properties with both null and non-null values.
The sub: argument is a list specifying subnodes for the node at the root of the subgrove returned by subgrove-spec. The members of the list shall be lists whose first member is a symbol specifying the name of the subnode property and the rest of whose members are subgrove-specs specifying the nodes in the value of the property. This argument defaults to the empty list.
The children: argument is a list of subgrove-specs specifying the nodes in the value of the children property of the node at the root of the subgrove returned by subgrove-spec.

NOTE 30

These can also be specified using the sub: argument, but using children: is often more convenient.
This argument defaults to the empty list.
The label: argument specifies the label for the arrow which shall be created from the transformed node in the source grove to the node at the root of the subgrove being created in the result grove. It may be any expression language object.  The default value is #f.
The sort-children: argument is a procedure that affects the ordering of the children of the root node.  See section 11.3.2, Create-spec.
Classes and properties are named by their application names as defined in the SGML property set, with the usual transformation described in section 10.1.5, Application Name Transformation.