anchor.diff:  
   
   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)
  +    memoizeNamespaceTable.GetOrAdd(nm, splitNamespaceAux)
   
   let splitNamespaceMemoized nm = splitNamespace nm
   
  
positive.code:     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)
  
  // -------------------------------------------------------------------- 
  // Ordered lists with a lookup table
  
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
  