anchor.diff:  type TestDerivatives () =
   
       [<SetUp>]
  -    member this.Setup () =
  +    member _.Setup () =
           ()
   
       [<Test>]
  -    member this.TestDerivativeAddTT () =
  -      for combo in Combos.AllDevicesAndBackends do
  -        let fwdx = combo.tensor([1.; 2.; 3.]).forwardDiff(combo.tensor([2.; 3.; 4.]))
  -        let fwdy = combo.tensor([5.; 6.; 7.]).forwardDiff(combo.tensor([2.; 2.; 3.]))
  -        let fwdz = fwdx + fwdy
  -        let fwdzCorrect = combo.tensor([6.; 8.; 10.])
  -        let fwdzd = fwdz.derivative
  -        let fwdzdCorrect = combo.tensor([4.; 5.; 7.])
  -
  -        let revx = combo.tensor([1.; 2.; 3.]).reverseDiff()
  -        let revy = combo.tensor([5.; 6.; 7.]).reverseDiff()
  -        let revz = revx + revy
  -        let revzCorrect = combo.tensor([6.; 8.; 10.])
  -        revz.reverse(combo.tensor([5.; 5.; 5.]))
  -        let revxd = revx.derivative
  -        let revxdCorrect = combo.tensor([5.; 5.; 5.])
  -        let revyd = revy.derivative
  -        let revydCorrect = combo.tensor([5.; 5.; 5.])
  -
  -        Assert.AreEqual(fwdzCorrect, fwdz)
  -        Assert.AreEqual(fwdzdCorrect, fwdzd)
  -        Assert.AreEqual(revzCorrect, revz)
  -        Assert.AreEqual(revxdCorrect, revxd)
  -        Assert.AreEqual(revydCorrect, revyd)
  -
  -    [<Test>]
  -    member this.TestDerivativeAddT2T1 () =
  -      for combo in Combos.AllDevicesAndBackends do
  -        let fwdx = combo.tensor([[1.; 2.]; [3.; 4.]]).forwardDiff(combo.tensor([[2.; 3.]; [4.; 5.]]))
  -        let fwdy = combo.tensor([5.; 6.]).forwardDiff(combo.tensor([2.; 3.]))
  -        let fwdz = fwdx + fwdy
  -        let fwdzCorrect = combo.tensor([[6.; 8.]; [8.; 10.]])
  -        let fwdzd = fwdz.derivative
  -        let fwdzdCorrect = combo.tensor([[4.; 6.]; [6.; 8.]])
  -
  -        let revx = combo.tensor([[1.; 2.]; [3.; 4.]]).reverseDiff()
  -        let revy = combo.tensor([5.; 6.]).reverseDiff()
  -        let revz = revx + revy
  -        let revzCorrect = combo.tensor([[6.; 8.]; [8.; 10.]])
  -        revz.reverse(combo.tensor([[2.; 3.]; [4.; 5.]]))
  -        let revxd = revx.derivative
  -        let revxdCorrect = combo.tensor([[2.; 3.]; [4.; 5.]])
  -        let revyd = revy.derivative
  -        let revydCorrect = combo.tensor([6.; 8.])
  -
  -        Assert.AreEqual(fwdzCorrect, fwdz)
  -        Assert.AreEqual(fwdzdCorrect, fwdzd)
  -        Assert.AreEqual(revzCorrect, revz)
  -        Assert.AreEqual(revxdCorrect, revxd)
  -        Assert.AreEqual(revydCorrect, revyd)
  +    member _.TestDerivativeAddTT () =
  +        for combo in Combos.AllDevicesAndBackends do
  +            let fwdx = combo.tensor([1.; 2.; 3.]).forwardDiff(combo.tensor([2.; 3.; 4.]))
  +            let fwdy = combo.tensor([5.; 6.; 7.]).forwardDiff(combo.tensor([2.; 2.; 3.]))
  +            let fwdz = fwdx + fwdy
  +            let fwdzCorrect = combo.tensor([6.; 8.; 10.])
  +            let fwdzd = fwdz.derivative
  +            let fwdzdCorrect = combo.tensor([4.; 5.; 7.])
  +
  +            let revx = combo.tensor([1.; 2.; 3.]).reverseDiff()
  +            let revy = combo.tensor([5.; 6.; 7.]).reverseDiff()
  +            let revz = revx + revy
  +            let revzCorrect = combo.tensor([6.; 8.; 10.])
  +            revz.reverse(combo.tensor([5.; 5.; 5.]))
  +            let revxd = revx.derivative
  +            let revxdCorrect = combo.tensor([5.; 5.; 5.])
  +            let revyd = revy.derivative
  +            let revydCorrect = combo.tensor([5.; 5.; 5.])
  +
  +            Assert.AreEqual(fwdzCorrect, fwdz)
  +            Assert.AreEqual(fwdzdCorrect, fwdzd)
  +            Assert.AreEqual(revzCorrect, revz)
  +            Assert.AreEqual(revxdCorrect, revxd)
  +            Assert.AreEqual(revydCorrect, revyd)
  +
  +    [<Test>]
  +    member _.TestDerivativeAddT2T1 () =
  +        for combo in Combos.AllDevicesAndBackends do
  +            let fwdx = combo.tensor([[1.; 2.]; [3.; 4.]]).forwardDiff(combo.tensor([[2.; 3.]; [4.; 5.]]))
  +            let fwdy = combo.tensor([5.; 6.]).forwardDiff(combo.tensor([2.; 3.]))
  +            let fwdz = fwdx + fwdy
  +            let fwdzCorrect = combo.tensor([[6.; 8.]; [8.; 10.]])
  +            let fwdzd = fwdz.derivative
  +            let fwdzdCorrect = combo.tensor([[4.; 6.]; [6.; 8.]])
  +
  +            let revx = combo.tensor([[1.; 2.]; [3.; 4.]]).reverseDiff()
  +            let revy = combo.tensor([5.; 6.]).reverseDiff()
  +            let revz = revx + revy
  +            let revzCorrect = combo.tensor([[6.; 8.]; [8.; 10.]])
  +            revz.reverse(combo.tensor([[2.; 3.]; [4.; 5.]]))
  +            let revxd = revx.derivative
  +            let revxdCorrect = combo.tensor([[2.; 3.]; [4.; 5.]])
  +            let revyd = revy.derivative
  +            let revydCorrect = combo.tensor([6.; 8.])
  +
  +            Assert.AreEqual(fwdzCorrect, fwdz)
  +            Assert.AreEqual(fwdzdCorrect, fwdzd)
  +            Assert.AreEqual(revzCorrect, revz)
  +            Assert.AreEqual(revxdCorrect, revxd)
  +            Assert.AreEqual(revydCorrect, revyd)
   
       // TODO: add test for AddTTConst
       // TODO: add test for AddTT0
  
positive.code:         Assert.True(revxd.allclose(revxdCorrect, 0.01))
  
      [<Test>]
      member this.TestDerivativeMaxUnpool1D () =
          let indices = dsharp.tensor([[[2, 3, 6], [0, 3, 8]], [[2, 3, 6], [0, 3, 6]]], dtype=DType.Int32)
          let fwdx = dsharp.tensor([[[ 2.5995,  1.3858,  0.9593],
                                      [ 0.4564,  0.4587,  1.1539]],
  
negative.code:         Assert.True(revxd.allclose(revxdCorrect, 0.01))
  
      [<Test>]
      member _.TestDerivativeMaxUnpool3D () =
          let indices = dsharp.tensor([[[[ 6,  7],
                                          [16, 17]],
                               
  