Preheat the oven to 180°C / 350°F. Grease a deep 20 × 20 cm oven-proof dish with butter.
Cut the croissants into 1 cm-thick slices.
Pour the espresso into a shallow bowl and stir in the Amaretto.
Briefly soak the croissant slices in the coffee mixture, then arrange a layer in the prepared dish.
Dust lightly with cocoa powder and scatter over some of the chopped white chocolate.
In a bowl, mix the double cream with the vanilla extract and beaten egg (add a little sugar if you prefer a sweeter pudding).
Pour half of the cream mixture over the croissants.
Dip the remaining croissant slices in the coffee and create a second layer in the dish. Dust again with cocoa powder.
Pour over the remaining cream mixture, ensuring all the croissants are well moistened.
Leave to stand for 10 minutes, then gently press down to level the pudding.
Bake for 20 minutes, until lightly golden.
Allow to cool completely, then refrigerate overnight.
Mix the mascarpone with the icing sugar until smooth, then stir in the Amaretto.
Spread this cream over the chilled pudding then chill for 15 minutes to set.
Dust with cocoa powder, then cut it into squares or use a cookie cutter to create individual portions.
Top each portion with chocolate shavings or toasted almond flakes.