module ReeDto::DtoClassMethods

def build(attrs = nil, **kwargs)

def build(attrs = nil, **kwargs)
  dto_obj = new(attrs || kwargs)
  set_attrs = attrs ? attrs.keys : kwargs.keys
  fields_to_set = fields_with_default.reject{ set_attrs.include?(_1.name) }
  fields_to_set.each do |field|
    dto_obj.set_attr(field.name, field.default)      
  end
  dto_obj
end

def collections

def collections
  @collections ||= []
end

def fields

def fields
  @fields ||= []
end

def fields_with_default

def fields_with_default
  @fields_with_default ||= []
end

def set_collections(v)

def set_collections(v)
  @collections = v
end

def set_fields(v)

def set_fields(v)
  @fields = v
end

def set_fields_with_default(v)

def set_fields_with_default(v)
  @fields_with_default = v
end