anchor.diff:  
       [<Test>]
       member x.Test4() = 
  -        let shape1 = Rectangle(1.3, 10.0)
  +        let shape1 = Rectangle {
  +            width = 1.3
  +            length = 10.0
  +        }
           let shape2 = Circle(2.5)
           let shape3 = Empty
  +        let shape4 = Magic {
  +            foo = 42
  +            bar = [| shape1; shape2 |]
  +        }
           let json1 = JsonConvert.SerializeObject(shape1)
           let json2 = JsonConvert.SerializeObject(shape2)
           let json3 = JsonConvert.SerializeObject(shape3)
  +        let json4 = JsonConvert.SerializeObject(shape4)
  +
           """
  -{"Case":"Rectangle","Fields":[1.3,10.0]}
  +{"Case":"Rectangle","Fields":[{"width":1.3,"length":10.0}]}
           """.Trim() |> should equal json1
           """
   {"Case":"Circle","Fields":[2.5]}
  
positive.code:         shape1 |> should equal parsed1
          shape2 |> should equal parsed2
          shape3 |> should equal parsed3
          parsed1 = shape1 |> should be True
          parsed1 = shape2 |> should be False
          parsed1 = shape3 |> should be False
          parsed2 = shape1 |> should be False
          parsed2 = shape2 |> should be True
          parsed2 = shape3 |> should be False
          parsed3 = shape1 |> should be False
          parsed3 = shape2 |> should be False
          parsed3 = shape3 |> should be True
          Error = parse_error |> should be True
  
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"
  