def METHOD_NAME(self, arctic_lib, version, symbol, item, _previous_version):
    # Currently we try to bson encode if the data is less than a given size and store it in
    # the version collection, but pickling might be preferable if we have characters that don't
    # play well with the bson encoder or if you always want your data in the data collection.
    if not SKIP_BSON_ENCODE_PICKLE_STORE:
        try:
            # If it's encodeable, then ship it
            b = bson.BSON.encode({'data': item})
            if len(b) < min(MAX_BSON_ENCODE, _HARD_MAX_BSON_ENCODE):
                version['data'] = item
                return
        except InvalidDocument:
            pass
    # Pickle, chunk and store the data
    collection = arctic_lib.get_top_level_collection()
    # Try to pickle it. This is best effort
    version['blob'] = _MAGIC_CHUNKEDV2
    # Python 3.8 onwards uses protocol 5 which cannot be unpickled in Python versions below that, so limiting
    # it to use a maximum of protocol 4 in Python which is understood by 3.4 onwards and is still fairly efficient.
    # pickle version 4 is introduced with  python 3.4 and default with 3.8 onward
    pickle_protocol = min(pickle.HIGHEST_PROTOCOL, 4)
    pickled = pickle.dumps(item, protocol=pickle_protocol)
    data = compress_array([pickled[i * _CHUNK_SIZE: (i + 1) * _CHUNK_SIZE] for i in range(int(len(pickled) / _CHUNK_SIZE + 1))])
    for seg, d in enumerate(data):
        segment = {'data': Binary(d)}
        segment['segment'] = seg
        seg += 1
        sha = checksum(symbol, segment)
        collection.update_one({'symbol': symbol, 'sha': sha},
                              {'$set': segment, '$addToSet': {'parent': version['_id']}},
                              upsert=True)