anchor.diff:  
   /// Specifies the formatting behaviour of JSON values
   [<RequireQualifiedAccess>]
  -type JsonSaveOptions = 
  +type JsonSaveOptions =
     /// Format (indent) the JsonValue
     | None = 0
     /// Print the JsonValue in one line in a compact way
     | DisableFormatting = 1
   
  -/// Represents a JSON value. Large numbers that do not fit in the 
  +/// Represents a JSON value. Large numbers that do not fit in the
   /// Decimal type are represented using the Float case, while
   /// smaller numbers are represented as decimals to avoid precision loss.
   [<RequireQualifiedAccess>]
   type JsonValue =
     | String of string
     | Number of decimal
  -  | Float of float 
  +  | Float of float
     | Record of properties:(string * JsonValue)[]
     | Array of elements:JsonValue[]
     | Boolean of bool
  
positive.code:             serialize sb (indentation + 2) v |> ignore
            newLine 0
            sb.Append "}"
        | Array elements -> 
            let isNotFirst = ref false
            sb.Append "[" |> ignore
            for element in elements do
              if !isNotFirst then sb.Append "," |> ignore else isNotFirst := true
              newLine 2
              serialize sb (indentation + 2) element |> ignore
            if elements.Length > 0 then 
              newLine 0
            sb.Append "]"
  
  
negative.code:       | Boolean b -> sb.Append(if b then "true" else "false")
        | Number number -> sb.Append(number.ToString(CultureInfo.InvariantCulture))
        | Float number -> sb.Append(number.ToString(CultureInfo.InvariantCulture))
        | String s ->
            sb.Append("\"" + JavaScriptStringEncode(s) + "\"")
        | Record properties ->
            let isNotFirst = ref false
            sb.Append "{"  |> ignore
            for k, v in properties do
  