code: def transitive_subgraph_of_addresses(self, addresses, *vargs, **kwargs):
      
      ret = OrderedSet()
      self.walk_transitive_dependency_graph(addresses, ret.add,
                                            *vargs,
                                            **kwargs)
      return ret
docs: Returns all transitive dependencies of `addresses`.
  
      Note that this uses `walk_transitive_dependencies_graph` and the predicate is passed through,
      hence it trims graphs rather than just filtering out Targets that do not match the predicate.
      See `walk_transitive_dependency_graph for more detail on `predicate`.
  
      :API: public
  
      :param list<Address> addresses: The root addresses to transitively close over.
      :param function predicate: The predicate passed through to
        `walk_transitive_dependencies_graph`.
      :param bool postorder: When ``True``, the traversal order is postorder (children before
        parents), else it is preorder (parents before children).
      :param function predicate: If this parameter is not given, no Targets will be filtered
        out of the closure.  If it is given, any Target which fails the predicate will not be
        walked, nor will its dependencies.  Thus predicate effectively trims out any subgraph
        that would only be reachable through Targets that fail the predicate.
      :param function dep_predicate: Takes two parameters, the current target and the dependency of
        the current target. If this parameter is not given, no dependencies will be filtered
        when traversing the closure. If it is given, when the predicate fails, the edge to the dependency
        will not be expanded.