anchor.diff:  open System.Collections.Generic
   
   exception IncompatibleMerge of string
  +exception PatternMatchedBug of string * string
  +
  +[<AutoOpen>]
  +module private Helpers =
  +    let inline bug pattern =
  +        raise (PatternMatchedBug ("This pattern was never meant to be matched", pattern))
   
   type private 'T SBHTree = Node of 'T * 'T list * 'T SBHTree list
   
  
positive.code:             if this <= other <> descending
                  then this
                  else other
          | []                                    -> failwith "This should never happen"
  
      let uncons descending roots =
          //find the root with the minimum value a return it along with the remaining roots
  
negative.code:             if (SBHTree.item tree <= SBHTree.item tree') <> descending
                  then root, roots
                  else root', root::roots'
          | [] -> bug "[]"
          
      let rec findMinRootItem descending = function
          | [Root(_, node)]                       -> item node
  