Coat the chicken with 2 tablespoons roasted curry powder, Sri Lankan chilli powder or cayenne pepper, turmeric, black pepper, salt and vinegar. Cover and marinate in the refrigerator for 30 minutes.
Heat the oil in a wide, heavy based pan over a medium heat. Add the mustard seeds, fenugreek, cinnamon, cardamom and cloves. Cook for about 30 seconds, until aromatic and the mustard seeds begin to pop.
Add the onion and cook for 8 to 10 minutes, until soft and golden at the edges. Add the green chillies, Garlic and Ginger Paste, curry leaves, optional pandan and optional lemongrass. Cook for 1 minute, then stir in 2 teaspoons roasted curry powder and the measured 30ml hot water for another minute.
Add the chicken with its marinade. Cook over medium high heat for 7 to 8 minutes, turning regularly, until the exterior loses its raw colour and the masala clings to the pieces.
Add the tomatoes and cook over a medium heat for 5 minutes, pressing them with the spoon until they soften into the masala.
Add the measured 250ml coconut milk and 150ml hot water. Bring to a gentle simmer, cover and cook over a low heat for 25 minutes, turning the chicken once or twice.
Add the measured 150ml coconut milk and simmer uncovered for 8 to 10 minutes, until the gravy remains pourable but coats a spoon. Confirm the chicken is thoroughly cooked to at least 75°C in the thickest part away from the bone.
Stir in the final 1 teaspoon roasted curry powder and adjust the salt if necessary. Remove from the heat, cover and rest for 10 minutes. Remove the lemongrass, pandan and large whole spices when convenient before serving.