code: def walk_transitive_dependee_graph(self,
                                       addresses,
                                       work,
                                       predicate=None,
                                       postorder=False,
                                       prelude=None,
                                       epilogue=None):
      
      walked = set()
  
      def _walk_rec(addr):
        if addr not in walked:
          walked.add(addr)
          target = self._target_by_address[addr]
          if not predicate or predicate(target):
            if not postorder:
              work(target)
            if prelude:
              prelude(target)
            for dep_address in self._target_dependees_by_address[addr]:
              _walk_rec(dep_address)
            if epilogue:
              epilogue(target)
            if postorder:
              work(target)
      for address in addresses:
        _walk_rec(address)
docs: Identical to `walk_transitive_dependency_graph`, but walks dependees preorder (or postorder
      if the postorder parameter is True).
  
      This is identical to reversing the direction of every arrow in the DAG, then calling
      `walk_transitive_dependency_graph`.
  
      :API: public