 {
   let id: UInt
   init(_ x: UInt = UInt.randomPositive()) { id = x }
+}
+
+private class Witness: Thing
+{
+  override init(_ x: UInt) { super.init(x) }
   deinit { print("Released     \(id)") }
 }
 

  public func testUnmanaged()
  {
    var i = UInt.randomPositive()
    var a = AtomicReference(Thing(i))
    do {
      let r1 = a.swap(.none)
      print("Will release \(i)")

    }

    i = UInt.randomPositive()
    XCTAssert(a.swap(Witness(i)) == nil)
    print("Releasing    \(i)")
    XCTAssert(a.swap(nil) != nil)

    i = UInt.randomPositive()
    XCTAssert(a.storeIfNil(Witness(i)) == true)
    let j = UInt.randomPositive()
    print("Will drop    \(j)")
    // a compiler warning is expected for the next line
    XCTAssert(a.swapIfNil(Witness(j)) == false)

    do {
      let v = a.load()
