First make the bread dough. Put the flour, caster sugar and yeast into the bowl of a stand mixer with a pinch of salt. Mix to combine.
Heat the milk in a pan until just tepid, then mix with the eggs in a jug. With the motor running, gradually add the milk and eggs until you have a tacky, smooth dough. Knead with the dough hook until the dough is no longer sticky, but soft and smooth.
Transfer to an oiled bowl and cover with a damp cloth until it has risen, this should take a couple of hours.
Alternatively, make by hand, turn out the dough onto a lightly floured surface and knead until it is smooth.
For the almond filling, beat the sugar and butter together until soft and fluffy, then add the almonds, almond extract and orange blossom water (if using).
Transfer the dough to a lightly floured work surface and divide into 16 pieces. Keep the pieces covered with a damp tea towel until you need to use them.
Roll each piece of dough into a ball, then roll out to a round of between 15–20cm/6–8in in diameter. Spread with a dessertspoon of the filling mixture and spread it out, leaving a small border all the way round. Roll up tightly, then roll or massage into a long sausage, about 25cm/10in long.
Roll up into a coil, like a snail shell, tucking the outside end underneath. Make sure you do this quite loosely, otherwise the middle coils will not have enough space to spread and will push upwards.
Repeat and arrange over two baking trays and cover with a damp tea towel to prove for another hour or so until doubled in size again.
Preheat the oven to 180C/160C Fan/Gas 4. Bake for around 12 minutes until lightly golden and cooked through.
Leave to cool then sprinkle with icing sugar.