ReplaceProc:
TYPE =
PROC [parent: Pipal.Object, table: RefTab.Ref]
RETURNS [newParent: Pipal.Object];
Replaces each child of parent found in table.
Table maps [old child] -> [new child].
No replaceMethod method => crash and burn.
If no child of parent is found in table, it is possible but not imperative that newParent=parent.
TransitiveReplace:
PROC [oldRoots: Pipal.Objects, table: RefTab.Ref]
RETURNS [newRoots: Pipal.Objects];
Replaces every child by its matching object everywhere reachable from oldRoots. Recursively replaces each parent. If no first is reachable from oldRoots then newRoots=oldRoots.