First, divide the cauliflower into large florets and cut away as much of the stem as possible without cutting it all the way through.
Put the cauliflowers into a large pan half-filled with water. Add the peppercorns, cardamom pods, cinnamon sticks, and cloves and bring to the boil. Reduce the heat and simmer for 7-8 minutes, or until just tender.
Drain and allow to cool, then place, stem-side up, in a single layer in an ovenproof dish.
Heat the oil in a pan. When hot, add the ground urad dal and fry for about 1-2 minutes.
Transfer it to a bowl and add the cashew nuts, almonds, half the chopped chillies, 1 1/2 tablespoons coriander and the khoya. Season with salt and mix well.
Stuff the mixture inside and all around the cauliflower and set it aside.
Put the ginger and garlic pastes, mustard paste, turmeric, and remaining oil in another bowl. Season with salt and mix well.
Spread the marinade all around the cauliflower and set it aside for 1 hour.
Put the lemon juice, grated paneer, cream, yoghurt, the remaining chopped chillies, remaining chopped coriander and the white pepper in another bowl. Season with salt and mix well.
Spread this marinade over the cauliflower and set it aside for a further 1 hour.
Prepare a tandoor for moderate heat or preheat the grill (broiler) to medium.
Take a metal skewer and thread the cauliflower pieces onto it, leaving a 2.5-cm / 1-inch gap in between each piece. Roast in a moderately hot tandoor or under the grill for about 8-10 minutes.