Mix the marinade ingredients together in a large bowl, add the meat and stir to coat. Cover and put in the fridge to marinate for 30 minutes, or if possible overnight.
Meanwhile, wash the rice in a couple of changes of water, then soak it for 20 minutes. Bring 2.5 litres/4½ pints of water to the boil in a large saucepan. Add the rice, lime juice and salt and boil for 6 minutes, until the rice is two-thirds cooked. Drain the rice and spread it out on a tray to cool.
Heat two-thirds of the ghee or vegetable oil in a wide, heavy-based casserole dish. Add the raisins and fry for 30 seconds, or until they puff up, then remove them and drain on kitchen paper. Add the walnuts and fry for 30 seconds, then remove them and drain on kitchen paper.
Add the cardamom pods, cinnamon and bay to the casserole and fry for 30–60 seconds. Add the cumin and black cardamom pods. Add the meat with its marinade and cook for 10–12 minutes over a high heat, stirring occasionally. Add the coriander, garam masala and 250ml/9fl oz of water and cook, covered, over a medium heat for 1 hour, or until the meat is tender and some sauce still remains in the pan. Add a little more water, if needed.
To assemble, spread an even layer of the rice over the cooked meat and sauce, sprinkle the saffron milk, rose water, fried raisins and walnuts, cranberries and mint over the rice and the remaining ghee.
Cover with a tightly fitting lid and cook over a medium–low heat for 10–15 minutes, until the dish is hot through. Set aside for another 5 minutes, then open the pot and serve.