+ PyObject *l;
+
+ if (!o || GF_PYCHECK(o) || FE_PYCHECK(o)) return (0);
+ else if (MP_PYCHECK(o)) return (MP_COPY(MP_X(o)));
+ else if (PFILT_PYCHECK(o)) return (MP_COPY(PFILT_F(o)->m));
+#ifdef PY2
+ else if (PyInt_Check(o)) return (mp_fromlong(MP_NEW, PyInt_AS_LONG(o)));
+#endif
+ else if ((l = PyNumber_Index(o)) != 0) {
+#ifdef PY2
+ if (PyInt_Check(o)) return (mp_fromlong(MP_NEW, PyInt_AS_LONG(o)));
+#endif
+ if (PyLong_Check(o)) return (mp_frompylong(o));
+ }
+ PyErr_Clear(); return (0);