Issue #27275: Fixed implementation of pop() and popitem() methods in
subclasses of accelerated OrderedDict.
diff --git a/Objects/odictobject.c b/Objects/odictobject.c
index a6963d7..b4940e3 100644
--- a/Objects/odictobject.c
+++ b/Objects/odictobject.c
@@ -1099,28 +1099,13 @@
     }
 
     /* Now delete the value from the dict. */
-    if (PyODict_CheckExact(od)) {
-        if (node != NULL) {
-            value = _PyDict_GetItem_KnownHash(od, key, hash);  /* borrowed */
-            if (value != NULL) {
-                Py_INCREF(value);
-                if (_PyDict_DelItem_KnownHash(od, key, hash) < 0) {
-                    Py_DECREF(value);
-                    return NULL;
-                }
-            }
-        }
-    }
-    else {
-        int exists = PySequence_Contains(od, key);
-        if (exists < 0)
-            return NULL;
-        if (exists) {
-            value = PyObject_GetItem(od, key);
-            if (value != NULL) {
-                if (PyObject_DelItem(od, key) == -1) {
-                    Py_CLEAR(value);
-                }
+    if (node != NULL) {
+        value = _PyDict_GetItem_KnownHash(od, key, hash);  /* borrowed */
+        if (value != NULL) {
+            Py_INCREF(value);
+            if (_PyDict_DelItem_KnownHash(od, key, hash) < 0) {
+                Py_DECREF(value);
+                return NULL;
             }
         }
     }