anchor.diff:      
   
   let [<Test>] ``struct recrods fields can be mutated`` () =
  -    let i1,i2,m1,m2 = 0,2,4,8
  -    let mutable sr1 = { M1 = i1; M2 = i2}
  -    sr1.M1 <- m1
  -    sr1.M2 <- m2
  -    Assert.IsTrue (sr1.M1 = m1 && sr1.M2 = m2)
  +    Check.QuickThrowOnFailure <|
  +    fun (i1:int) (i2:int) (m1:int) (m2:int) ->
  +        (i1 <> m1 && i2 <> m2) ==>
  +            let mutable sr1 = { M1 = i1; M2 = i2}
  +            sr1.M1 <- m1
  +            sr1.M2 <- m2
  +            sr1.M1 = m1 && sr1.M2 = m2
   
   
   [<Struct>]
  
positive.code: open System
  open System.Runtime.InteropServices
  open NUnit.Framework
  
  type Record =
      {   A: int
  
negative.code: 
  
  let [<Test>] ``struct records support [<CustomEquality>]`` () =
      Check.QuickThrowOnFailure <|
      fun (i1:int) (i2:int) ->
          let sr1 = { C1 = i1; C2 = i2 }
          let sr2 = { C1 = i1; C2 = i2 }
          (sr1.Equals sr2)      
  
  
  let [<Test>] ``struct records support [<CustomComparison>]`` () =
      Check.QuickThrowOnFailure <|
      fun (i1:int) (i2:int) (k1:int) (k2:int) ->        
          let sr1 = { C1 = i1; C2 = i2 }
          let sr2 = { C1 = k1; C2 = k2 }
          if   sr1 > sr2 then compare sr1 sr2 = 1
          elif sr1 < sr2 then compare sr1 sr2 = -1
          elif sr1 = sr2 then compare sr1 sr2 = 0
          else false
  
  
  let [<Test>] ``struct records hold [<CustomComparison>] [<CustomEquality>] metadata`` () =
  