anchor.diff:      Concurrent.ConcurrentDictionary<string,string[]>()
   
   let splitNamespaceToArray nm =
  -    let mutable res = Unchecked.defaultof<_>
  -    let ok = memoizeNamespaceArrayTable.TryGetValue(nm,&res)
  -    if ok then res else
  -    let x = Array.ofList (splitNamespace nm)
  -    (memoizeNamespaceArrayTable.[nm] <- x; x)
  -
  +    memoizeNamespaceArrayTable.GetOrAdd(nm, fun nm -> 
  +        let x = Array.ofList (splitNamespace nm)
  +        x)
   
   let splitILTypeName (nm:string) = 
       match nm.LastIndexOf '.' with
  
positive.code: 
  
  let splitNamespace nm =
      let mutable res = Unchecked.defaultof<_>
      let ok = memoizeNamespaceTable.TryGetValue(nm,&res)
      if ok then res else
      let x = splitNamespaceAux nm
      (memoizeNamespaceTable.[nm] <- x; x)
  
  let splitNamespaceMemoized nm = splitNamespace nm
  
  
negative.code:     else None, nm
  
  let splitTypeNameRight nm =
      memoizeNamespaceRightTable.GetOrAdd(nm, splitTypeNameRightAux)
  
  // -------------------------------------------------------------------- 
  // Ordered lists with a lookup table
  