anchor.diff:  
   type Foo = { A : int ; B : string }
   
  -and Bar =
  +type Bar =
       | Foo of Foo
       | Bar of int
  +    | C
  +    | D of string option
   
   let p3 = mkParser<Bar list []>()
   
  -p3 """ [| [ Bar(42) ; Foo({ A = 12 ; B = "Foof" })] |] """+p3 """ [| [ Bar 42 ; Bar(42) ; Foo({ A = 12 ; B = "Foof" }) ; C ] ; [] ; [D (Some "42")]|] """
positive.code: and private mkFParser<'T> () : Parser<'T> =
      let spaced p = between spaces spaces p
      let token str = spaced (pstring str) >>% ()
      let wrap (p : Parser<'a>) = unbox<Parser<'T>>(spaced p)
  
      let mkMemberParser (shape : IShapeWriteMember<'DeclaringType>) =
  
negative.code:         fold (fun d i -> i d) init injectors separator
  
      match TypeShape.Create<'T>() with
      | Shape.Unit -> wrap(paren spaces)
      | Shape.Bool -> wrap(stringReturn "true" true <|> stringReturn "false" false)
      | Shape.Byte -> wrap(puint8)
      | Shape.Int32 -> wrap(pint32)
  