class Concurrent::Collection::AtomicReferenceMapBackend

def lock_and_clean_up_reverse_forwarders(old_table, old_table_size, new_table, i, forwarder)

def lock_and_clean_up_reverse_forwarders(old_table, old_table_size, new_table, i, forwarder)
  # transiently use a locked forwarding node
  locked_forwarder = Node.new(moved_locked_hash = MOVED | LOCKED, new_table, NULL)
  if old_table.cas(i, nil, locked_forwarder)
    new_table.volatile_set(i, nil) # kill the potential reverse forwarders
    new_table.volatile_set(i + old_table_size, nil) # kill the potential reverse forwarders
    old_table.volatile_set(i, forwarder)
    locked_forwarder.unlock_via_hash(moved_locked_hash, MOVED)
    true
  end
end