docs: public final BaseMessageFilter setupRemoteSessionFilter(BaseMessageFilter messageFilter) throws RemoteException
      {
          boolean bThinClient = false;
          if (messageFilter instanceof ClientSessionMessageFilter)
              bThinClient = true;
          messageFilter = this.setupRemoteFilter(messageFilter);  // Change the filter?
          messageFilter.setThinTarget(bThinClient);   // This way the server process knows not to send a thick message here (before converting it to thin).
          MessageManager messageManager = ((Application)this.getTask().getApplication()).getMessageManager();
          MessageReceiver messageReceiver = messageManager.getMessageQueue(messageFilter.getQueueName(), messageFilter.getQueueType()).getMessageReceiver();
          messageReceiver.addMessageFilter(messageFilter);    // I do this just in case the link code wants to add a filter to the tree (ie., RecordFilters).
          BaseMessageFilter messageFilterNew = messageFilter.linkRemoteSession(this);  // Link the filter and give filter a chance to change the remote version.
          if (messageFilterNew != messageFilter)
          {       // Rarely, but if it is changed, free the old one.
              messageReceiver.removeMessageFilter(messageFilter, true);
              if (messageFilterNew.getMessageReceiver() == null)
              {   // And it hasn't already added itself, add it to it's receiver
                  messageManager = ((Application)this.getTask().getApplication()).getMessageManager();
                  messageReceiver = messageManager.getMessageQueue(messageFilterNew.getQueueName(), messageFilterNew.getQueueType()).getMessageReceiver();
                  messageReceiver.addMessageFilter(messageFilterNew);
              }
          }
          messageFilterNew.addMessageListener(this);
          return messageFilterNew;
      }