anchor.diff:          """
   {"Case":"Empty"}
           """.Trim() |> should equal json3
  +        """
  +{"Case":"Magic","Fields":[{"foo":42,"bar":[{"Case":"Rectangle","Fields":[{"width":1.3,"length":10.0}]},{"Case":"Circle","Fields":[2.5]}]}]}
  +        """.Trim() |> should equal json4
           let parsed1 = JsonConvert.DeserializeObject<Shape> json1
           let parsed2 = JsonConvert.DeserializeObject<Shape> json2
           let parsed3 = JsonConvert.DeserializeObject<Shape> json3
  +        let parsed4 = JsonConvert.DeserializeObject<Shape> json4
           let parse_error =
               try
                   JsonConvert.DeserializeObject<Shape> "Meh!"
  
positive.code: 
      [<Test>]
      member x.Test4() = 
          let shape1 = Rectangle(1.3, 10.0)
          let shape2 = Circle(2.5)
          let shape3 = Empty
          let json1 = JsonConvert.SerializeObject(shape1)
          let json2 = JsonConvert.SerializeObject(shape2)
          let json3 = JsonConvert.SerializeObject(shape3)
          """
  {"Case":"Rectangle","Fields":[1.3,10.0]}
          """.Trim() |> should equal json1
          """
  {"Case":"Circle","Fields":[2.5]}
  
negative.code: open Newtonsoft.Json
  
  type Shape =
      | Rectangle of Rectangle
      | Circle of radius : float
      | Magic of SeveralShapes
      | Empty
      | Error
  and Rectangle = {
      width : float
      length : float
  }
  and SeveralShapes = {
      foo : int
      bar : Shape array
  }
  
  type SharedFSType() = 
      static member ForCS = "F# into CS"
  