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