class Lutaml::Model::Schema::Generator::PropertiesCollection

def add_property(property)

def add_property(property)
  @properties << if property.is_a?(Property)
                   property
                 else
                   Property.new(property.name, property, register: register)
                 end
end

def from_attributes(attributes, register)

def from_attributes(attributes, register)
  new(register: register).tap do |collection|
    attributes.each do |attribute|
      name = attribute.name
      collection << Property.new(name, attribute, register: register)
    end
  end
end

def from_class(klass)

def from_class(klass)
  from_attributes(klass.attributes.values, extract_register_from(klass))
end

def initialize(properties = [], register:)

def initialize(properties = [], register:)
  self.properties = properties
  @register = register
end

def properties=(properties)

def properties=(properties)
  @properties ||= []
  @properties.clear
  @properties = properties.map do |property|
    next property if property.is_a?(Property)
    Property.new(property.name, property, register)
  end
end

def to_schema

def to_schema
  properties.each_with_object({}) do |property, schema|
    schema.merge!(property.to_schema)
  end
end