docs: def _get_provider_session(self, session_name):
          """Returns the requested provider session.
  
          Instantiates a new one if the named session is not already known.
  
          """
          agent_key = self._get_agent_key()
          if session_name in self._provider_sessions[agent_key]:
              return self._provider_sessions[agent_key][session_name]
          else:
              session_class = getattr(self._provider_manager, 'get_' + session_name + '_for_family')
              if self._proxy is None:
                  if 'notification_session' in session_name:
                      # Is there something else we should do about the receiver field?
                      session = session_class('fake receiver', self._catalog.get_id())
                  else:
                      session = session_class(self._catalog.get_id())
              else:
                  if 'notification_session' in session_name:
                      # Is there something else we should do about the receiver field?
                      session = session_class('fake receiver', self._catalog.get_id(), self._proxy)
                  else:
                      session = session_class(self._catalog.get_id(), self._proxy)
              self._set_family_view(session)
              self._set_object_view(session)
              self._set_operable_view(session)
              self._set_containable_view(session)
              if self._session_management != DISABLED:
                  self._provider_sessions[agent_key][session_name] = session
              return session