anchor.diff:  [<RequireQualifiedAccess; CompilationRepresentation (CompilationRepresentationFlags.ModuleSuffix)>]
   module internal Vnode =
   
  -    let private makeArray () =
  -        Array.create 32 Nil
  +    let inline cloneArray (arr : Vnode<'k, 'v> array) : Vnode<'k, 'v> array =
  +#if SIMPLE_CLONE_ARRAY
  +        arr.Clone () :?> Vnode<'k, 'v> array
  +#else // use of this presumes Array.Clone () is slower
  +        let arr' = Array.zeroCreate 32 // there's an unecessary check against the size here, but that's the only inefficiency
  +        Array.Copy (arr, 0, arr', 0, 32)
  +        arr'
  +#endif
   
  -    let private hashToIndex h dep =
  +    let inline private hashToIndex h dep =
           (h >>> (dep * 5)) &&& 0x1F
   
  -    let rec private add5 (hkv : Hkv<'k, 'v>) (dep : int) (mdep : int) (node : Vnode<'k, 'v>) : Vnode<'k, 'v> =
  +    let rec add (hkv : Hkv<'k, 'v>) (earr : Vnode<'k, 'v> array) (mdep : int) (dep : int) (node : Vnode<'k, 'v>) : Vnode<'k, 'v> =
           if dep <= mdep then
   
               // handle non-clash cases
  
positive.code:             | Clash clashMap ->
                  Clash ^ Map.add hkv.K hkv.V clashMap
  
      let add k v node =
          add5 (Hkv (k, v)) 0 node
  
      let empty =
          Nil
  
  /// Variant map.
  type Vmap<'k, 'v when 'k : comparison> =
      private
          { Mdep : int
            Vnode : Vnode<'k, 'v> }
  
  [<RequireQualifiedAccess; CompilationRepresentation (CompilationRepresentationFlags.ModuleSuffix)>]
  module Vmap =
  
negative.code:     let makeEmpty mdep =
          if mdep > 6 then failwith "Vmap max depth should not be greater than 6."
          elif mdep < 0 then failwith "Vmap max depth should not be less than 0."
          else { Vnode = Vnode.empty; EmptyArray = Array.create 32 Vnode.empty; MaxDepth = mdep }
  
      let add (k : 'k) (v : 'v) map =
          { map with Vnode = Vnode.add (Hkv (k, v)) map.EmptyArray map.MaxDepth 0 map.Vnode }