anchor.diff:  open System.Text
   open System.Collections.Generic
   
  -type PfData =
  -  | Pfbool of bool
  -  | Pfnumber of float
  -  | Pfdate of DateTime
  -  | Pfstring of string
  -  | Pflist of List<PfData>
  -  | PfObj of Dictionary<string, PfData>
  +[<RequireQualifiedAccess>]
  +type ParaValue =
  +  | Bool of bool
  +  | Number of float
  +  | Date of DateTime
  +  | String of string
  +  | Array of elements:ParaValue[]
  +  | Record of properties:(string * ParaValue)[]
   
   
   let isspace (c:int) = c = 10 || c = 13 || c = 9 || c = 32
  
positive.code:   let MaxTokenSize = 256
    let (stringBuffer:char[]) = Array.zeroCreate MaxTokenSize
    let mutable stringBufferCount = 0
    let mutable obj = new Dictionary<string, PfData>()
  
    member self.readString () =
      let mutable isDone = false
  
negative.code:     assert (stream.Peek() = 61)
      stream.Read() |> ignore
      skipWhitespace stream
      obj.Add(key, value)
  
    member self.Parse = self.ParseObject 
  
    member self.Obj () = PfObj obj
  
  