diff --git a/include/__hash_table b/include/__hash_table
index 4b04dd6..e02d347 100644
--- a/include/__hash_table
+++ b/include/__hash_table
@@ -2248,7 +2248,7 @@
         return _InsertReturnType{end(), false, _NodeHandle()};
     pair<iterator, bool> __result = __node_insert_unique(__nh.__ptr_);
     if (__result.second)
-        __nh.__release();
+        __nh.__release_ptr();
     return _InsertReturnType{__result.first, __result.second, _VSTD::move(__nh)};
 }
 
@@ -2263,7 +2263,7 @@
         return end();
     pair<iterator, bool> __result = __node_insert_unique(__nh.__ptr_);
     if (__result.second)
-        __nh.__release();
+        __nh.__release_ptr();
     return __result.first;
 }
 
@@ -2327,7 +2327,7 @@
     if (__nh.empty())
         return end();
     iterator __result = __node_insert_multi(__nh.__ptr_);
-    __nh.__release();
+    __nh.__release_ptr();
     return __result;
 }
 
@@ -2341,7 +2341,7 @@
     if (__nh.empty())
         return end();
     iterator __result = __node_insert_multi(__hint, __nh.__ptr_);
-    __nh.__release();
+    __nh.__release_ptr();
     return __result;
 }
 
diff --git a/include/__node_handle b/include/__node_handle
index e543fa9..be1fe17 100644
--- a/include/__node_handle
+++ b/include/__node_handle
@@ -56,7 +56,7 @@
     optional<allocator_type> __alloc_;
 
     _LIBCPP_INLINE_VISIBILITY
-    void __release()
+    void __release_ptr()
     {
         __ptr_ = nullptr;
         __alloc_ = _VSTD::nullopt;
diff --git a/include/__tree b/include/__tree
index 0aa9bff..4473ac3 100644
--- a/include/__tree
+++ b/include/__tree
@@ -2414,7 +2414,7 @@
 
     __insert_node_at(__parent, __child,
                      static_cast<__node_base_pointer>(__ptr));
-    __nh.__release();
+    __nh.__release_ptr();
     return _InsertReturnType{iterator(__ptr), true, _NodeHandle()};
 }
 
@@ -2439,7 +2439,7 @@
         __insert_node_at(__parent, __child,
                          static_cast<__node_base_pointer>(__ptr));
         __r = __ptr;
-        __nh.__release();
+        __nh.__release_ptr();
     }
     return iterator(__r);
 }
@@ -2504,7 +2504,7 @@
     __node_base_pointer& __child = __find_leaf_high(
         __parent, _NodeTypes::__get_key(__ptr->__value_));
     __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr));
-    __nh.__release();
+    __nh.__release_ptr();
     return iterator(__ptr);
 }
 
@@ -2523,7 +2523,7 @@
     __node_base_pointer& __child = __find_leaf(__hint, __parent,
                                                _NodeTypes::__get_key(__ptr->__value_));
     __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr));
-    __nh.__release();
+    __nh.__release_ptr();
     return iterator(__ptr);
 }
 
diff --git a/test/support/nasty_macros.hpp b/test/support/nasty_macros.hpp
index 30d0ec0..0106f70 100644
--- a/test/support/nasty_macros.hpp
+++ b/test/support/nasty_macros.hpp
@@ -62,4 +62,7 @@
 #define __output NASTY_MACRO
 #define __input NASTY_MACRO
 
+#define __acquire NASTY_MACRO
+#define __release NASTY_MACRO
+
 #endif // SUPPORT_NASTY_MACROS_HPP
