anchor.diff:                          // record type
                           | ty when FSharpType.IsRecord ty ->
                               let fields = Reflection.FSharpType.GetRecordFields(dataType)
  +                                         |> Array.map (fun field -> FSharpValue.GetRecordField(firstElement, field), field.Name)
                               fields
  -                            |> Seq.map(fun field -> toPrettyHeaderString separator (FSharpValue.GetRecordField(firstElement,field)) field.Name)
  +                            |> Seq.map(fun (field,name) -> toPrettyHeaderString separator field name)
                               |> String.concat separator
                           // tuple type
                           | ty when FSharpType.IsTuple ty ->
  
positive.code:                     // record type
                      | ty when FSharpType.IsRecord ty ->
                          let fields = Reflection.FSharpType.GetRecordFields(dataType)
                          let elemToStr (elem:'record) =
                              //for each field get value
                              fields
                              |> Seq.map(fun field -> toPrettyString separator (FSharpValue.GetRecordField(elem,field)) )
                              |> String.concat separator
                          data |> Seq.map elemToStr
                      // tuple type
                      | ty when FSharpType.IsTuple ty ->
                          data |> Seq.map FSharpValue.GetTupleFields |> Seq.map (toPrettyString separator)
                      // objects
  
negative.code: 
                  let lines =
                      match dataType with
                      //simple value type to string
                      | ty when ty.IsValueType ->
                          data |> Seq.map (fun x -> sprintf "%A" x)
                      // string to string ::
  