<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def post_run_cell(self):
 """Runs after the user-entered code in a cell has been executed. It detects any new, decoratable objects that haven't been decorated yet and then decorates them. """

        #We just want to detect any new, decoratable objects that haven't been
        #decorated yet.
        decorlist = {k: [] for k in self.atypes}
        for atype in self.atypes:
            for n, o in self._get_decoratables(atype):
                self._decorate(atype, n, o)

        #Next, check whether we have an outstanding "loop intercept" that we
        #"wrapped" with respect to acorn by enabling streamlining.
        if self.pre is not None:
            #Re-enable the acorn logging systems so that it gets back to normal.
            from acorn.logging.decoration import set_streamlining
            set_streamlining(False)

            from acorn import msg
            from acorn.logging.database import record
            from time import time

            #Determine the elapsed time for the execution of the entire cell.
            entry = self.pre
            entry["e"] = time() - entry["s"]
            #See if we can match the executed cell's code up with one that we
            #intercepted in the past..
            cellid = self._find_cellid(entry["c"])
            if cellid is None:
                cellid = self.cellid

            #Store the contents of the cell *before* they get overwritten by a
            #diff.
            self.cellids[cellid] = entry["c"]
                        
            record("__main__.{0:d}".format(cellid), entry, diff=True)
            msg.info(entry, 1)

            self.pre = None

        #Finally, check whether any new variables have shown up, or have had
        #their values changed.
        from acorn.logging.database import tracker, active_db, Instance
        varchange = self._var_changes()
        taskdb = active_db()
        for n, o in varchange:
            otrack = tracker(o)
            if isinstance(otrack, Instance):
                taskdb.log_uuid(otrack.uuid)

        global thumb_uuid
        if thumb_uuid is not None:
            self._log_images()
            #Reset the image tracker list so that we don't save these images
            #again next cell execution.
            thumb_uuid = None
            
        self.cellid = None