Add an improvement wrinkle to Neil Schemenauer's change to int_mul
(rev. 2.86).  The other type is only disqualified from sq_repeat when
it has the CHECKTYPES flag.  This means that for extension types that
only support "old-style" numeric ops, such as Zope 2's ExtensionClass,
sq_repeat still trumps nb_multiply.
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 1d05a63..a8ea6ac 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -345,8 +345,10 @@
 #define USE_SQ_REPEAT(o) (!PyInt_Check(o) && \
 			  o->ob_type->tp_as_sequence && \
 			  o->ob_type->tp_as_sequence->sq_repeat && \
-			  (!o->ob_type->tp_as_number || \
-			   !o->ob_type->tp_as_number->nb_multiply))
+			  !(o->ob_type->tp_as_number && \
+                            o->ob_type->tp_flags & Py_TPFLAGS_CHECKTYPES && \
+			    o->ob_type->tp_as_number->nb_multiply))
+
 static PyObject *
 int_mul(PyObject *v, PyObject *w)
 {