module Lutaml::Model::Serialize::ClassMethods

def generate_hash_from_child_mappings(value, child_mappings)

def generate_hash_from_child_mappings(value, child_mappings)
  return value unless child_mappings
  hash = {}
  value.each do |child_obj|
    map_key = nil
    map_value = {}
    child_mappings.each do |attr_name, path|
      if path == :key
        map_key = child_obj.send(attr_name)
      elsif path == :value
        map_value = child_obj.send(attr_name)
      else
        path = [path] unless path.is_a?(Array)
        path[0...-1].inject(map_value) do |acc, k|
          acc[k.to_s] ||= {}
        end.public_send(:[]=, path.last.to_s, child_obj.send(attr_name))
      end
    end
    hash[map_key] = map_value
  end
  hash
end