How are different product types processed when added to the cart

When a product is added to cart, the function “_prepareProduct()” is called on each product type object.

_prepareProduct(Varien_Object $buyRequest, $product, $processMode)

Even product type object like Mage_Catalog_Model_Product_Type_Configurable, Mage_Catalog_Model_Product_Type_Grouped have there own prepareProduct() function which do the required processing when adding a product to cart.
So using this method each product is processed differently when adding to cart.