How does \Magento\Eav\Model\AttributeRepository::getList() work?

Context:

Details: How does \Magento\Framework\Api\ExtensionAttribute\JoinProcessor::process() work?

How does \Magento\Eav\Model\AttributeRepository::addFilterGroupToCollection() work?


How does \Magento\Framework\Data\Collection\AbstractDb::getSize() work?

Details: How does \Magento\Eav\Model\ResourceModel\Entity\Attribute\Collection::addAttributeGrouping() work?

$attributeCollection->getSelect()->assemble()

SELECT `main_table`.* FROM `eav_attribute` AS `main_table`
	INNER JOIN `eav_entity_type` AS `entity_type`
		ON main_table.entity_type_id = entity_type.entity_type_id
	LEFT JOIN `eav_entity_attribute` 
		ON main_table.attribute_id = eav_entity_attribute.attribute_id
	INNER JOIN `catalog_eav_attribute` AS `additional_table` 
		ON main_table.attribute_id = additional_table.attribute_id 
WHERE (`entity_type_code` = ''catalog_product'') AND (`attribute_set_id` != '''') 
GROUP BY `main_table`.`attribute_id`

Details: How does \Magento\Eav\Model\AttributeRepository::get() work?