// The mapping subscript slot.
static PyObject *pyqtBoundSignal_mp_subscript(PyObject *self,
        PyObject *subscript)
{
    qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self;

    int idx = qpycore_signal_index((qpycore_pyqtSignal *)bs->unbound_signal,
            subscript, "a bound signal type argument");

    if (idx < 0)
        return 0;

    // Create a new bound signal.
    return qpycore_pyqtBoundSignal_New(bs->unbound_signal, bs->bound_pyobject,
            bs->bound_qobject, idx);
}
// The mapping subscript slot.
static PyObject *pyqtSignal_mp_subscript(PyObject *self, PyObject *subscript)
{
    qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self;

    int idx = qpycore_signal_index(ps->master, subscript,
            "an unbound signal type argument");

    if (idx < 0)
        return 0;

    // Create a copy of the signal with only the overload requested.
    PyObject *copy = PyType_GenericNew(Py_TYPE(ps), 0, 0);

    if (copy)
    {
        qpycore_pyqtSignal *ps_copy = (qpycore_pyqtSignal *)copy;
        ps_copy->master = ps->master;
        ps_copy->master_index = idx;
        ps_copy->overloads = ps->overloads;
    }

    return copy;
}