Place the cashews or almonds in a small bowl and cover with hot water. Set aside for 20 minutes. Remove from the water and blend or crush in a mortar and pestle until smooth.
In a large pan or pot, melt the butter over medium heat.
Once melted, add the green cardamom, black cardamom, peppercorns, cloves, and cinnamon stick.
Cook until starting to become fragrant, about 2 minutes, then stir in the fenugreek seeds.
Once the seeds begin to sizzle, stir in the ginger, garlic, and green chilies. Cook just until fragrant the moisture from the pastes evaporate.
Stir in the tomato paste, then the pureed tomatoes, Kashmiri red chili powder, and salt.
Cook until the tomato mixture is reduced to a thick paste, 15-20 minutes.
Pour in the water and add the cashew/almond paste. Reduce heat to medium low and simmer for 15 minutes.
Stir in the sugar and kasuri methi. Adjust seasoning to taste, adding a little more salt if desired.
Add the grilled chicken pieces, stirring to coat. Cover and simmer for about 5-8 minutes, until cooked through. If the sauce is too thick, stir in a little more hot water. Additional seasonings may be needed.
Remove the cover, reduce heat to low, and stir in garam masala and heavy cream. Simmer lightly just until heated through, about 2 minutes, then remove the pan from heat.
Discard the cinnamon stick and other whole spices.
Serve the Butter Chicken immediately with a drizzle of additional heavy cream, a sprinkling of chopped cilantro leaves, and alongside rice and/or naan.