#NEWLINE# def _cook( self , object ) : #NEWLINE# #INDENT# '\n        (internal) Backreference an object.\n\n        Notes on this method for the hapless future maintainer: If I\'ve already\n        gone through the prepare/preserve cycle on the specified object (it is\n        being referenced after the serializer is "done with" it, e.g. this\n        reference is NOT circular), the copy-in-place of aList is relevant,\n        since the list being modified is the actual, pre-existing jelly\n        expression that was returned for that object. If not, it\'s technically\n        superfluous, since the value in self.preserved didn\'t need to be set,\n        but the invariant that self.preserved[id(object)] is a list is\n        convenient because that means we don\'t have to test and create it or\n        not create it here, creating fewer code-paths.  that\'s why\n        self.preserved is always set to a list.\n\n        Sorry that this code is so hard to follow, but Python objects are\n        tricky to persist correctly. -glyph\n        ' #NEWLINE# aList = self . preserved [ id ( object ) ] #NEWLINE# newList = copy . copy ( aList ) #NEWLINE# refid = self . _ref_id #NEWLINE# self . _ref_id = ( self . _ref_id + 1 ) #NEWLINE# aList [ : ] = [ reference_atom , refid , newList ] #NEWLINE# self . cooked [ id ( object ) ] = [ dereference_atom , refid ] #NEWLINE# return aList