def find_class(self, module, name):
        """ This override is here to help pickle find the modules that classes are defined in.

        It does three things:
         1) remaps the "PackagedFunction" class from pyccc to the `source.py` module.
         2) Remaps any classes created in the client's '__main__' to the `source.py` module
         3) Creates on-the-fly modules to store any other classes present in source.py

        References:
                This is a modified version of the 2-only recipe from
                https://wiki.python.org/moin/UsingPickle/RenamingModules.
                It's been modified for 2/3 cross-compatibility    """
        import pickle

        modname = self.RENAMETABLE.get(module, module)

        try:
            # can't use ``super`` here (not 2/3 compatible)
            klass = pickle.Unpickler.find_class(self, modname, name)

        except (ImportError, RuntimeError):
            definition = getattr(source, name)
            newmod = _makemod(modname)
            sys.modules[modname] = newmod
            setattr(newmod, name, definition)
            klass = pickle.Unpickler.find_class(self, newmod.__name__, name)
            klass.__module__ = module
        return klass
This override is here to help pickle find the modules that classes are defined in.

        It does three things:
         1) remaps the "PackagedFunction" class from pyccc to the `source.py` module.
         2) Remaps any classes created in the client's '__main__' to the `source.py` module
         3) Creates on-the-fly modules to store any other classes present in source.py

        References:
                This is a modified version of the 2-only recipe from
                https://wiki.python.org/moin/UsingPickle/RenamingModules.
                It's been modified for 2/3 cross-compatibility