def retrieve_reviewers(self, product):
        """Retrieve reviewers who reviewed a given product.

        Args:
          product: A product specifying reviewers.

        Returns:
          A list of reviewers who review the product.

        Raises:
          TypeError: when given product isn't instance of specified product
            class when this graph is constructed.
        """
        if not isinstance(product, self._product_cls):
            raise TypeError(
                "Type of given product isn't acceptable:", product,
                ", expected:", self._product_cls)
        return list(self.graph.predecessors(product))