code: def pickle_object(self, obj):
      # This function is called to pickle obj to be transferred back to the
      # server. In this direction, we only allow objects that already exist
      # on the remote side so if this is not a stub, we do not allow it to be
      # transferred
      if getattr(obj, "___connection___", None) == self:
          # This is something we can transfer over
          return ObjReference(
              VALUE_LOCAL,
              obj.___remote_class_name___,
              obj.___identifier___,
          )
  
      raise ValueError(
          "Cannot send object of type %s from client to server"
          % type(obj)
      )
  
imports: import fcntl
  import gc
  import os
  import importlib
  import itertools
  import select
  from subprocess import Popen, PIPE
  import sys
  import threading
  import time
  from .None import data_transferer
  from .consts import FIELD_ARGS, FIELD_CONTENT, FIELD_KWARGS, FIELD_MSGTYPE, FIELD_OPTYPE, FIELD_TARGET, MSG_CONTROL, MSG_EXCEPTION, MSG_INTERNAL_ERROR, MSG_OP, MSG_REPLY, OP_GETMETHODS, VALUE_LOCAL, VALUE_REMOTE, CONTROL_GETEXPORTS, CONTROL_SHUTDOWN
  from .communication.channel import Channel
  from .communication.socket_bytestream import SocketByteStream
  from .data_transferer import DataTransferer, ObjReference
  from .exception_transferer import load_exception
  from .override_decorators import LocalAttrOverride, LocalException, LocalOverride
  from .stub import create_class
  from .utils import get_canonical_name
label_desc: Use image node_id 13 for calling the Client obj's underlying member method code with example usage: obj.pickle_object(obj) and returns: ObjReference