docs: def deserialize(self, value, **kwargs):
          """Deserialize the attribute from a HAL structure.
  
          Get the value from the HAL structure from the attribute's compartment
          using the attribute's name as a key, convert it using the attribute's
          type. Schema will either return it to  parent schema or will assign
          to the output value if specified using the attribute's accessor setter.
  
          :param value: HAL structure to get the value from.
          :return: Deserialized attribute value.
          :raises: ValidationError.
          """
          compartment = value
  
          if self.compartment is not None:
              compartment = value[self.compartment]
  
          try:
              value = self.accessor.get(compartment, **kwargs)
          except (KeyError, AttributeError):
              if not hasattr(self, "default") and self.required:
                  raise
              return self.default() if callable(self.default) else self.default
  
          return self.attr_type.deserialize(value, **kwargs)