          doesn't have many objects.
          """
          with self.assertNumQueries(2):
              qs = Author.objects.select_related('first_book').prefetch_related('first_book__read_by')
              lists = [[six.text_type(r) for r in a.first_book.read_by.all()]
                       for a in qs]
              self.assertEqual(lists, [["Amy"], ["Amy"], ["Amy"], ["Amy", "Belinda"]])
  
      def test_reverse_one_to_one_then_m2m(self):
          """
 
</s> remove             lists = [[six.text_type(r) for r in b.read_by.all()] for b in author.books.all()]
 </s> add             lists = [[str(r) for r in b.read_by.all()] for b in author.books.all()] </s> remove             lists = [[[six.text_type(r) for r in b.read_by.all()]
 </s> add             lists = [[[str(r) for r in b.read_by.all()] </s> remove             lists = [[[six.text_type(r) for r in b.read_by.all()]
 </s> add             lists = [[[str(r) for r in b.read_by.all()] </s> remove             lists = [[[six.text_type(r) for r in b.read_by.all()]
 </s> add             lists = [[[str(r) for r in b.read_by.all()] </s> remove         lst2 = [[six.text_type(author) for author in book.aged_authors.all()] for book in qs]
 </s> add         lst2 = [[str(author) for author in book.aged_authors.all()] for book in qs]
            lists = [[str(r) for r in a.first_book.read_by.all()]
          doesn't have many objects.
          """
          with self.assertNumQueries(2):
              qs = Author.objects.select_related('first_book').prefetch_related('first_book__read_by')
            lists = [[str(r) for r in a.first_book.read_by.all()]
                       for a in qs]
              self.assertEqual(lists, [["Amy"], ["Amy"], ["Amy"], ["Amy", "Belinda"]])
  
      def test_reverse_one_to_one_then_m2m(self):
          """
keep keep keep keep replace keep keep keep keep keep
 Refs #23919 -- Removed six.<various>_types usage

Thanks Tim Graham and Simon Charette for the reviews. 
tests/prefetch_related/tests.py