code: def add_collection(collection_name, builder_class = inventory_collection_builder, extra_properties = {}, settings = {}, &block)
        builder = builder_class.prepare_data(collection_name,
                                             self.class,
                                             builder_settings(settings),
                                             &block)
  
        builder.add_properties(extra_properties) if extra_properties.present?
        builder.evaluate_lambdas!(self)
  
        collections[collection_name] = builder.to_inventory_collection
      end
docs: @param manager [ManageIQ::Providers::BaseManager] A manager object
   Interface for creating InventoryCollection under @collections
  
   @param builder_class    [ManageIQ::Providers::Inventory::Persister::Builder] or subclasses
   @param collection_name  [Symbol || Array] used as InventoryCollection:association
   @param extra_properties [Hash]   props from InventoryCollection.initialize list
           - adds/overwrites properties added by builder
  
   @param settings [Hash] builder settings
           - @see ManageIQ::Providers::Inventory::Persister::Builder.default_options
           - @see make_builder_settings()
  
   @example
     add_collection(:vms, ManageIQ::Providers::Inventory::Persister::Builder::CloudManager) do |builder|
       builder.add_properties(
         :strategy => :local_db_cache_all,
       )
     )
  
   @see documentation https://github.com/ManageIQ/guides/tree/master/providers/persister/inventory_collections.md