anchor.diff:      ///O(1) worst case. Returns option first min or max element.
       member this.TryGetHead() = PairingHeap.tryGetHead this
   
  -    ///O(log n) amortized time. Returns a new heap with the element inserted.
  +    ///O(1) amortized time. Returns a new heap with the element inserted.
       member this.Insert x  = PairingHeap.insert x this
   
       ///O(1) Returns true if the heap has no elements.
  
positive.code:         let lH = this::[]
          PairingHeap.sumTree lH
  
      ///O(log n) amortized time. Returns heap from merging two heaps, both must have same descending.
      member this.Merge (xs : PairingHeap<'T>) = 
          if this.IsDescending = xs.IsDescending then PairingHeap.merge this xs
          else failwith "not same max or min"
  
      ///O(log n) amortized time. Returns heap option from merging two heaps.
      member this.TryMerge (xs : PairingHeap<'T>) = 
          if this.IsDescending = xs.IsDescending then Some(PairingHeap.merge this xs)
          else None
  
negative.code:     let inline uncons (xs: PairingHeap<'T>) = xs.Uncons()
  
      ///O(log n) amortized time. Returns option head element and tail.
      let inline tryUncons (xs: PairingHeap<'T>) = xs.TryUncons()
  