     { // Promote the 2nd item to 1st
       head = node.memory.next
 
-      let element = node.memory.elem.move()
+      let element = node.memory.elem
+      node.destroy()
       OSAtomicEnqueue(pool, node, 0)
       return element
     }


private struct Node<T>
{
  var next: UnsafeMutablePointer<Node<T>> = nil
  let elem: UnsafeMutablePointer<T>

  init(_ p: UnsafeMutablePointer<T>)
  {
    elem = p
  }
}

    while UnsafePointer<COpaquePointer>(pool).memory != nil
    {
      let node = UnsafeMutablePointer<Node<T>>(OSAtomicDequeue(pool, 0))
      node.dealloc(1)
    }
    // release the pool stack structure
