class_docstr: Leverage DictSerializer to perform serde.
code: def serial(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
  
imports: import operator
  import weakref
  from typing import Dict, List, Type, Tuple
  import cloudpickle
  from ..core import Serializer, Placeholder, buffered
  from .field import Field
  from .field_type import PrimitiveFieldType, ListType, TupleType, DictType, DtypeType, DatetimeType, TimedeltaType, TZInfoType
label_desc: Use image node_id 2 for calling the SerializableSerializer obj's underlying member method code with example usage: obj.serial(obj, context) and returns: type,  primitive_vals,  list,  False