class FactoryBot::DeclarationList

@api private

def attributes

def attributes
  @attributes ||= AttributeList.new(@name).tap do |list|
    to_attributes.each do |attribute|
      list.define_attribute(attribute)
    end
  end
end

def declare_attribute(declaration)

def declare_attribute(declaration)
  delete_declaration(declaration) if overridable?
  @declarations << declaration
  declaration
end

def delete_declaration(declaration)

def delete_declaration(declaration)
  @declarations.delete_if { |decl| decl.name == declaration.name }
end

def each(&block)

def each(&block)
  @declarations.each(&block)
end

def initialize(name = nil)

def initialize(name = nil)
  @declarations = []
  @name = name
  @overridable = false
end

def overridable

def overridable
  @overridable = true
end

def overridable?

def overridable?
  @overridable
end

def to_attributes

def to_attributes
  @declarations.reduce([]) { |result, declaration| result + declaration.to_attributes }
end