Patch the results dict. The default processes the :attr:`Experiment.START_TIME`
        and :attr:`Experiment.END_TIME` metadata fields back into Python `datetime` objects
        from ISO strings. This isn't strictly necessary, but it makes notebook
        data structure more Pythonic.

def patch( self ):
        """Patch the results dict. The default processes the :attr:`Experiment.START_TIME`
        and :attr:`Experiment.END_TIME` metadata fields back into Python `datetime` objects
        from ISO strings. This isn't strictly necessary, but it makes notebook
        data structure more Pythonic."""

        for k in self._results.keys():
            ars = self._results[k]
            for res in ars:
                if isinstance(res, dict) and res[epyc.Experiment.METADATA][epyc.Experiment.STATUS]:
                    # a successful, non-pending result, patch its timing metadata
                    self._patchDatetimeMetadata(res, epyc.Experiment.START_TIME)
                    self._patchDatetimeMetadata(res, epyc.Experiment.END_TIME)
        ps = dict()
        for k in self._pending.keys():
            ps[int(k)] = self._pending[k]
        self._pending = ps