anchor.diff:      override t.Device = Device(t.DeviceType, tt.DeviceIndex)
       override _.Backend = Backend.Torch
       override _.Handle = box tt
  -
       override _.ClampT(low, high) = checkClosed(); tt <- tt.Clamp(low.TorchTensor.Item(), high.TorchTensor.Item()) // TODO - next version of TorchSharp will have in place version of this
       override _.LtTT(t2) = checkClosed(); tt.LtInPlace(t2.TorchTensor) |> ignore
       override _.GtTT(t2) = checkClosed(); tt.GtInPlace(t2.TorchTensor) |> ignore
  
positive.code:     override _.AddTT(t2) = checkClosed(); tt.AddInPlace(t2.TorchTensor) |> ignore
      override _.AddTT0(t2) = checkClosed(); tt.AddInPlace(t2.TorchTensor) |> ignore
      override _.AddT2T1(t2) = checkClosed(); tt.AddInPlace(t2.TorchTensor) |> ignore
      override _.AddTTSlice(location, t2) = checkClosed(); tt.AddTTSlice(location, t2.TorchTensor)
      override _.SubTT(t2) = checkClosed(); tt.SubInPlace(t2.TorchTensor) |> ignore
      override _.SubTT0(t2) = checkClosed(); tt.SubInPlace(t2.TorchTensor) |> ignore
      override _.MulTT(t2) = checkClosed(); tt.MulInPlace(t2.TorchTensor) |> ignore
  
negative.code:     override _.AsinT() = checkClosed(); tt.AsinInPlace() |> ignore
      override _.AcosT() = checkClosed(); tt.AcosInPlace() |> ignore
      override _.AtanT() = checkClosed(); tt.AtanInPlace() |> ignore
      override t.Ones() = checkClosed(); tt <- (RawTensor.Ones(shape, dtype, t.Device, Backend.Torch) :?> TorchRawTensor).TorchTensor
      override t.Zeros() = checkClosed(); tt <- (RawTensor.Zeros(shape, dtype, t.Device, Backend.Torch) :?> TorchRawTensor).TorchTensor
      override t.ToTensor() = 
          closed <- true; 
          TorchRawTensor(tt, shape, dtype, t.Device) :> RawTensor
  