For the shepherd's pie filling, preheat the oven to 140C/275F/Gas 1.
Place the cumin and coriander seeds into a dry frying pan on a low heat and toast them until they change colour slightly, then remove from the pan.
Grind the spices, ginger and garlic together in a spice grinder to a fine paste, adding only as much water as is necessary to make it into a paste.
Heat a large oven-proof casserole dish until medium hot, add the oil and continue to heat until a haze forms.
Add the lamb and brown well on all sides until the meat is well sealed.
Remove the lamb from the pan and set aside, then add the cinnamon, cardamom, cloves, peppercorns and the red chillies broken into pieces, to the pan.
Fry the spices for 1-2 minutes until the cloves swell a little. Add a little water to the pan to deglaze it, scraping up any meat residue and dissolving it in the water.
Add the chopped onions and cook until the liquid evaporates, then gently fry the onions until soft, about 4-5 minutes.
Add the spice paste and cook for 5-6 minutes mixing well then return the lamb to the pan.
Coat the lamb with the mixture then season lightly with salt and freshly ground black pepper, and cover the pan.
Place the pan into the oven and cook for 2- 2 ½ hours, stirring the casserole occasionally and making sure the onions do not catch on the bottom of the pan.
Add the chopped tomatoes and mix well (add a little more water if it looks dry) then cover and return to the oven for another 15 minutes.
Check that the lamb is cooked - the meat will have retracted from the bone and the meat will feel soft to the touch.
Lift the lamb out of the casserole and place onto a tray to cool slightly.
Carefully remove all the whole spices from the gravy in the casserole and discard.
When the lamb is cool enough to handle, shred the meat off of the bone and place back into the casserole with the gravy.
Place back onto a medium low heat and cook until the gravy has thickened nicely.
Add the freshly chopped coriander, check the seasoning, and spoon into an oven-proof dish, big enough that the filling reaches 2cm/1in from the top of the dish.
For the topping, place the potatoes into a saucepan and cover with water, bring to the boil and simmer until tender.
Drain, return the potatoes to the pan and back on the heat to drive off any extra moisture.
Pass the cooked potatoes through a ricer (or mash them to a smooth puree) and set aside.
Place the butter onto the board with the cumin seeds, then finely chop the two together.
Heat a frying pan and add the cumin butter and gently fry until the cumin colours gently, but don’t heat it too much or the butter will burn.
As soon as the cumin changes colour, lift out the seeds and add to the potatoes, transferring as little butter as is possible.
Add the chopped garlic and chilli to the butter in the frying pan and gently fry for one minute.
When the garlic is light golden-brown, add the spinach leaves, toss for a minute or so until soft, season lightly then remove from pan and place straight onto the dish of shredded lamb, spreading evenly over the top.
Mix the cumin seeds into the potato with the eggs and cream and mix well until smooth then check the seasoning.
Spread the potato over the spinach evenly, ruffle the surface a little, it doesn’t have to be smooth, just evenly spread.
Place back in the oven for 10 minutes then increase the oven temperature to 180C/350F/Gas 4 and cook for another 15 minutes until golden brown.
To serve, spoon a dollop of pie onto a serving plates, and serve with some crusty bread or steamed rice.