docs: def emulate_users(self, request):
          """
          The list view
          """
          def display_as_link(self, obj):
              try:
                  identifier = getattr(user_model_admin, list_display_link)(obj)
              except AttributeError:
                  identifier = admin.utils.lookup_field(list_display_link, obj, model_admin=self)[2]
              emulate_user_id = request.session.get('emulate_user_id')
              if emulate_user_id == obj.id:
                  return format_html('<strong>{}</strong>', identifier)
              fmtargs = {
                  'href': reverse('admin:emulate-user', kwargs={'user_id': obj.id}),
                  'identifier': identifier,
              }
              return format_html('<a href="{href}" class="emulate-user">{identifier}</a>', **fmtargs)
  
          opts = self.UserModel._meta
          app_label = opts.app_label
          user_model_admin = self.admin_site._registry[self.UserModel]
          request._lookup_model = self.UserModel
          list_display_links = user_model_admin.get_list_display_links(request, user_model_admin.list_display)
          # replace first entry in list_display_links by customized method display_as_link
          list_display_link = list_display_links[0]
          try:
              list_display = list(user_model_admin.segmentation_list_display)
          except AttributeError:
              list_display = list(user_model_admin.list_display)
          list_display.remove(list_display_link)
          list_display.insert(0, 'display_as_link')
          display_as_link.allow_tags = True  # TODO: presumably not required anymore since Django-1.9
          try:
              display_as_link.short_description = user_model_admin.identifier.short_description
          except AttributeError:
              display_as_link.short_description = admin.utils.label_for_field(list_display_link, self.UserModel)
          self.display_as_link = six.create_bound_method(display_as_link, self)
  
          ChangeList = self.get_changelist(request)
          cl = ChangeList(request, self.UserModel, list_display,
              (None,),  # disable list_display_links in ChangeList, instead override that field
              user_model_admin.list_filter,
              user_model_admin.date_hierarchy, user_model_admin.search_fields,
              user_model_admin.list_select_related, user_model_admin.list_per_page,
              user_model_admin.list_max_show_all,
              (),  # disable list_editable
              self)
          cl.formset = None
          selection_note_all = ungettext('%(total_count)s selected',
              'All %(total_count)s selected', cl.result_count)
  
          context = {
              'module_name': force_text(opts.verbose_name_plural),
              'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(cl.result_list)},
              'selection_note_all': selection_note_all % {'total_count': cl.result_count},
              'title': _("Select %(user_model)s to emulate") % {'user_model': opts.verbose_name},
              'is_popup': cl.is_popup,
              'cl': cl,
              'media': self.media,
              'has_add_permission': False,
              'opts': cl.opts,
              'app_label': app_label,
              'actions_on_top': self.actions_on_top,
              'actions_on_bottom': self.actions_on_bottom,
              'actions_selection_counter': self.actions_selection_counter,
              'preserved_filters': self.get_preserved_filters(request),
          }
          return TemplateResponse(request, self.change_list_template or [
              'admin/%s/%s/change_list.html' % (app_label, opts.model_name),
              'admin/%s/change_list.html' % app_label,
              'admin/change_list.html'
          ], context)