anchor.diff:                                                  prop.GetValue(box entry, null))
                       box a|]
           
  -        
  +        ///Returns a function to format a given value as string
           static member inline stringFunction (separator: string) (flatten: bool) (input: 'a) =
               let o = box input
               match o with
  +            //match string first so that it doesn't get treated as a char array
  +            | :? string -> 
  +                fun (x: obj) ->
  +                    let sb = new System.Text.StringBuilder()
  +                    sb.Append x |> ignore
  +                    let res = sb.ToString()
  +                    sb.Clear() |> ignore
  +                    res
               | :? System.Collections.IEnumerable as tmp ->
                   if flatten then
                       fun x ->
                           let sb = new System.Text.StringBuilder()
  +                        //iterates over Collections.IEnumerable to get entries as objects for the string builder
                           let a =
                               [for i in tmp do yield box i]
                           a
  
positive.code:                     values
                      |> Seq.map (fun x ->
                          let sb =
                              let stringBuilder = new System.Text.StringBuilder()
                              stringBuilder.Append ((Seq.head strFuncs)(Seq.head x)) |> ignore
                              (Seq.tail x)
                              |> Seq.fold2 (fun (sb: System.Text.StringBuilder) (func: obj -> string) value ->
                                  sb.AppendFormat (sprintf "%s{0}" separator, (func value))
                                  ) stringBuilder (Seq.tail strFuncs)
  
negative.code:                         // array type to string
                          | ty when ty.IsArray ->
                              data |> Seq.map (fun x -> toPrettyHeaderString separator (box x) dataType.Name flatten) |> String.concat separator
                          //| ty when (try ty.GetGenericTypeDefinition() = typedefof<_ list>
                          //           with
                          //           | _ -> false) ->
                          // list type
                          | ty when ty.Name = (typeof< _ list>).Name ->
                              data |> Seq.map (fun x -> toPrettyHeaderString separator (box x) dataType.Name flatten) |> String.concat separator
                          // union type
                          | ty when FSharpType.IsUnion ty -> dataType.Name
                          // record type
  