1. Heat the milk and butter in a small saucepan over a low heat until the butter has melted, then set to one side. Place the flour into a large bowl or the bowl of a stand mixer and add the salt, sugar and cardamom to one side and the yeast to the other.
2. When the milk mixture is cool enough to comfortably touch, beat in 1 of the eggs. Slowly pour the wet mixture into the dry mixture, mixing all the time until a rough dough forms. Knead for 5-10 minutes on a lightly oiled surface or use the dough hook attachment on a stand mixer to knead the dough until it is smooth and stretchy. Place the dough into a lightly oiled bowl, cover and leave to rise for 1-3 hours until doubled in size.
3. When the dough has risen, fold it in on itself a few times in the bowl, then divide into 12 even pieces. Shape each into a ball and arrange on two lined baking trays, allowing room for each to spread. Cover the buns with a sheet of oiled clingfilm and leave to rise for 45-60 minutes or until noticeably larger.
4. While the buns are proving, preheat the oven to 220°C, gas mark 7. Beat the remaining egg in a small bowl and use to brush over the risen buns using a pastry brush, and bake for 10-12 minutes until golden brown all over.
5. When the buns come out of the oven, cover with a slightly damp tea towel to stop a hard crust forming and leave to cool completely. Use a serrated knife to cut the top off each bun and scoop out the centre, placing the middles into a small bowl.
6. Tear up the centres into breadcrumbs and grate the marzipan into the bowl, then add the milk and stir until a thick paste forms. You shouldn’t be able to see any large pieces of marzipan. Spoon the marzipan paste back into the centres of the buns, filling each cavity to the top. Whip the cream into soft peaks and spoon into a piping bag with a star nozzle. Pipe a swirl on top of each bun, top with the lid and dust with icing sugar.