Custom JSON decoder that allows construction of a new ``Ci`` instance
        from a decoded JSON object.

        :param encoded: a JSON decoded object literal (a dict)

        :returns: "encoded" or one of the these objects: :class:`Ci`,
            :class:`MzmlProduct`, :class:`MzmlPrecursor`

def jsonHook(encoded):
        """Custom JSON decoder that allows construction of a new ``Ci`` instance
        from a decoded JSON object.

        :param encoded: a JSON decoded object literal (a dict)

        :returns: "encoded" or one of the these objects: :class:`Ci`,
            :class:`MzmlProduct`, :class:`MzmlPrecursor`
        """
        if '__Ci__' in encoded:
            return Ci._fromJSON(encoded['__Ci__'])
        elif '__MzmlProduct__' in encoded:
            return MzmlProduct._fromJSON(encoded['__MzmlProduct__'])
        elif '__MzmlPrecursor__' in encoded:
            return MzmlPrecursor._fromJSON(encoded['__MzmlPrecursor__'])
        else:
            return encoded