anchor.diff:  [<Struct>]
   [<StructLayout(LayoutKind.Explicit)>]
   type ExplicitLayoutStructRecord =
  -    {   [<FieldOffset 8>] mutable Z : int
  -        [<FieldOffset 4>] mutable Y : int
  -        [<FieldOffset 0>] mutable X : int
  -    }
  -
  -
  -let [<Test>] ``struct records layout mutable fields correctly with [<StructLayout(LayoutKind.Explicit)>] and [<FieldOffset x>]`` () =
  +    {   [<FieldOffset 8>] Z : int
  +        [<FieldOffset 4>] Y : int
  +        [<FieldOffset 0>] X : int
  +    }
  +
  +
  +let [<Test>] ``struct records offset fields correctly with [<StructLayout(LayoutKind.Explicit)>] and [<FieldOffset x>]`` () =
       let checkOffset fieldName offset = 
           offset = int (Marshal.OffsetOf (typeof<ExplicitLayoutStructRecord>, fieldName))
       Assert.IsTrue (checkOffset "X@" 0)
  
positive.code: 
  
  [<Struct>]
  [<StructLayout(LayoutKind.Sequential)>]
  type SequentialLayoutStructRecord =
      {   mutable First   : int
          mutable Second  : float
          mutable Third   : decimal
          mutable Fourth  : int
      }
  
  let [<Test>] ``struct records layout mutable fields in order with [<StructLayout(LayoutKind.Sequential)>]`` () =
      let compareOffsets field1 fn field2 = 
          fn  (Marshal.OffsetOf (typeof<SequentialLayoutStructRecord>, field1))
              (Marshal.OffsetOf (typeof<SequentialLayoutStructRecord>, field2))
      Assert.IsTrue (compareOffsets "First@"  (<) "Second@")
      Assert.IsTrue (compareOffsets "Second@" (<) "Third@")
      Assert.IsTrue (compareOffsets "Third@"  (<) "Fourth@")
      
negative.code:     fun (i1:int) (i2:int) ->
          let s = { C = i1; D = i2 }
          let r1 = { R2 = s }
          (obj.ReferenceEquals (r1.R1, null)) |@ "r1.R1 is null" .&.
          (r1.R2 = { C = i1; D = i2 })        |@ "r1.R2 = { C = i1; D = i2 }"
  
  
  [<Struct>]
  