class Lutaml::Model::KeyValueTransform

def process_mapping_rule(doc, instance, format, rule, options = {})

def process_mapping_rule(doc, instance, format, rule, options = {})
  raise "Attribute '#{rule.to}' not found in #{self}" unless valid_rule?(rule)
  attr = attribute_for_rule(rule)
  return if attr&.derived?
  value = extract_rule_value(doc, rule, format, attr)
  value = apply_value_map(value, rule.value_map(:from, options), attr)
  return process_custom_method(rule, instance, value) if rule.has_custom_method_for_deserialization?
  value = translate_mappings(value, rule.hash_mappings, attr, format)
  value = cast_value(value, attr, format, rule) unless rule.hash_mappings
  attr.valid_collection!(value, context)
  rule.deserialize(instance, value, attributes, self)
end