docs: def serialize(self, value, **kwargs):
          """Serialize the attribute of the input data.
  
          Gets the attribute value with accessor and converts it using the
          type serialization. Schema will place this serialized value into
          corresponding compartment of the HAL structure with the name of the
          attribute as a key.
  
          :param value: Value to get the attribute value from.
          :return: Serialized attribute value.
          """
          if types.Type.is_type(self.attr_type):
              try:
                  value = self.accessor.get(value, **kwargs)
              except (AttributeError, KeyError):
                  if not hasattr(self, "default") and self.required:
                      raise
                  value = self.default() if callable(self.default) else self.default
  
              return self.attr_type.serialize(value, **_get_context(self._attr_type_serialize_argspec, kwargs))
  
          return self.attr_type