Patch title: Release 94 bulk changes
Abstract:
File: /pliant/storage/document/document2.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "document.pli"

# Warning: using next_node then previous_node does not get back to the same node
#          because the sons are always scanned first


method d first_node root_id -> n
  arg StorageDocument d ; arg Str root_id ; arg_C StorageNode n
  n :> d search_node root_id
  if exists:n
    while { var Pointer:StorageNode s :> n first ; exists s }
      n :> s
    
method d next_node p -> n
  arg StorageDocument d ; arg StorageNode p ; arg_C StorageNode n
  n :> p next
  if exists:n
    while { var Pointer:StorageNode t :> n first ; exists t }
      n :> t
  else
    n :> p parent

method n last -> l
  arg StorageNode n ; arg_C StorageNode l
  l :> n first
  if exists:l
    while { var Pointer:StorageNode t :> l next ; exists t }
      l :> t

method d last_node root_id -> n
  arg StorageDocument d ; arg Str root_id ; arg_C StorageNode n
  n :> d search_node root_id
  if exists:n
    while { var Pointer:StorageNode t :> n last ; exists t }
      n :> t
    
method d previous_node n -> p
  arg StorageDocument d ; arg StorageNode n ; arg_C StorageNode p
  p :> n previous
  if exists:p
    while { var Pointer:StorageNode t :> p last ; exists t }
      p :> t
  else
    p :> n parent


export '. first_node' '. next_node' '. last' '. last_node' '. previous_node'