def METHOD_NAME(self, obj: Serializable, context: Dict):
    if obj._cache_primitive_serial and obj in _primitive_serial_cache:
        primitive_vals = _primitive_serial_cache[obj]
    else:
        primitive_vals = self._get_field_values(obj, obj._PRIMITIVE_FIELDS)
        if obj._cache_primitive_serial:
            primitive_vals = cloudpickle.dumps(primitive_vals)
            _primitive_serial_cache[obj] = primitive_vals
    compound_vals = self._get_field_values(obj, obj._NON_PRIMITIVE_FIELDS)
    return (type(obj), primitive_vals), [compound_vals], False