code: def testPickle5(self):
      comm = self.COMM
      rank = comm.Get_rank()
      pickle = self.pickle
      protocols = list(range(-2, pickle.PROTOCOL + 1))
      for protocol in [None] + protocols:
          pickle.PROTOCOL = protocol
          for threshold in (-1, 0, 64, 256, None):
              pickle.THRESHOLD = threshold
              threshold = pickle.THRESHOLD
              for slen in (0, 32, 64, 128, 256, 512):
                  sobj = numpy.empty(slen, dtype="i")
                  sobj.fill(rank)
                  #
                  robj = comm.sendrecv(sobj, rank, 42, None, rank, 42)
                  self.assertTrue(numpy.all(sobj == robj))
                  #
                  data, bufs = pickle.dumps_oob(sobj)
                  self.assertIs(type(data), bytes)
                  self.assertIs(type(bufs), list)
                  robj = pickle.loads_oob(data, bufs)
                  self.assertTrue(numpy.all(sobj == robj))
                  have_pickle5 = (
                      sys.version_info >= (3, 8)
                      or "pickle5" in sys.modules
                  )
                  if sobj.nbytes >= threshold and have_pickle5:
                      self.assertEqual(len(bufs), 1)
                      self.assertIs(type(bufs[0]), MPI.buffer)
                  else:
                      self.assertEqual(len(bufs), 0)
  
imports: from mpi4py import MPI
  from mpi4py.util import pkl5
  import sys, os
label_desc: Use image node_id 3 for calling the BaseTestPKL5 obj's underlying member method code with example usage: obj.testPickle5() without return types