code: def retrieve_review(self, reviewer, product):
          
          if not isinstance(reviewer, self._reviewer_cls):
              raise TypeError(
                  "Type of given reviewer isn't acceptable:", reviewer,
                  ", expected:", self._reviewer_cls)
          elif not isinstance(product, self._product_cls):
              raise TypeError(
                  "Type of given product isn't acceptable:", product,
                  ", expected:", self._product_cls)
  
          try:
              return self.graph[reviewer][product]["review"]
          except TypeError:
              raise KeyError(
                  "{0} does not review {1}.".format(reviewer, product))
docs: Retrieve review that the given reviewer put the given product.
  
          Args:
            reviewer: An instance of Reviewer.
            product: An instance of Product.
  
          Returns:
            A review object.
  
          Raises:
            TypeError: when given reviewer and product aren't instance of
              specified reviewer and product class when this graph is constructed.
            KeyError: When the reviewer does not review the product.