anchor.diff:                  let fieldMolds =
                       FSharpType.GetRecordFields ty |>
                       Array.map (fun propertyInfo -> (propertyInfo.Name, propertyInfo.PropertyType)) |>
  -                    Array.map (fun (name', ty') -> (name', typeToMold (Some (name, name')) ty' molder)) |>
  +                    Array.map (fun (name', ty') -> (name', typeToMold3 (Some (name, name')) ty' molder)) |>
                       Array.toList
                   moldRef := Record (pathOpt, name, fieldMolds)
               elif FSharpType.IsUnion ty then
  
positive.code: 
      let instanceToMold instance molder =
          let ty = instance.GetType ()
          typeToMold None ty molder
  
      let typeToInstance (ty : Type) molder =
          let mold = typeToMold None ty molder
          let instance = moldToInstance mold molder
          instance
  
  
negative.code:         | IPAddress -> if molder.DefaultAsRandom then new IPAddress (int64 (molder.Random.Next ())) :> obj else Guid.Empty :> obj
          | Guid -> if molder.DefaultAsRandom then Guid.NewGuid () :> obj else Guid.Empty :> obj
  
      let rec private typeToMold3 pathOpt (ty : Type) molder =
          let key = (pathOpt, ty)
          match molder.Cache.TryGetValue key with
          | (false, _) ->
  