AtomicNode *Acquire(long payload, long next)
        {
            AtomicNode *node = FreeList.Acquire();

            Interlocked.Exchange(ref node->Payload, payload);
            Interlocked.Exchange(ref node->Next, next);
            return(node);
        }