anchor.diff:  let erasedType<'T> assemblyName rootNamespace typeName = 
       ProvidedTypeDefinition(assemblyName, rootNamespace, typeName, Some(typeof<'T>))
   
  -let generalTypeSet = System.Collections.Generic.HashSet()
  +let generalTypeSet = System.Collections.Concurrent.ConcurrentDictionary()
   
   let runtimeType<'T> typeName = ProvidedTypeDefinition(niceName generalTypeSet typeName, Some typeof<'T>)
   
  
positive.code: let (|Lower|_|) = satisfies Char.IsLower
  
  /// Turns a string into a nice PascalCase identifier
  let niceName (set:System.Collections.Generic.HashSet<_>) =     
      fun (s: string) ->
          if s = s.ToUpper() then s else
          // Starting to parse a new segment 
  
negative.code:           else
              let number = name.Substring(lastLetterPos + 1)
              name <- name.Substring(0, lastLetterPos + 1) + (UInt64.Parse number + 1UL).ToString()
          set.TryAdd (name,()) |> ignore
          name
  
  
  