In a mixing bowl, add ginger-garlic paste, Coriander powder, turmeric powder, Salt, Red chilli powder and lemon juice. Mix it and add chicken pieces to it. Mix well so that all the chicken pieces are coated in this spice mixture nicely. Cover the bowl and let chicken marinate for 25-30 minutes.
Heat 2 tablespoon of Oil in a pan over medium heat. Once the oil is warm, add asafoetida and cumin seeds and when they start crackling, add bay leaves, cinnamon stick and black cardamom and saute. Add chopped onion and saute till they are pink. Add broken cashews now and saute again for 2-3 minutes.
Add ginger garlic paste and saute till the raw smell fades away. Add Salt, red chilli powder, turmeric powder, coriander powder and saute again. Now add chopped tomatoes and saute till it start separating oil. Switch off the heat and let the mixture cool down.
To the marinated chicken, add gram flour and yogurt and mix again so that its coated nicely all over chicken. Keep aside for 15 - 20 minutes.
Once the gravy mixture is cooled, take out all the whole spices from it and transfer the mixture into a grinding jar. Add little water and grind it into a fine paste.
Heat the same pan over medium heat and add rest of 2 tablespoon oil and butter to it. Add marinated chicken now and saute till the pieces start changing colour. Add the gravy and 1/2 cup of water and mix everything well. Cover the pan with lid and let the chicken cook for 15-20 minutes.
Add Cream and kasuri methi and mix. Cover the lid again and let it cook more for 5-7 minutes. Switch off the heat.
Transfer it into a serving bowl and garnish with chopped coriander leaves. Serve hot and enjoy with rice or bread of your choice.