Preheat the oven to 180°C.
Line the baking tin with baking paper leaving an inch of paper extra around the sides. This will make for easy removal once the dish is finished.
Melt the butter and chocolate together in a large heavy based saucepan.
In a bowl beat the eggs with the sugar and vanilla until thick and pale, around 3 minutes.
When the chocolate mixture has melted, let it cool a bit before beating it into the egg and sugar mixture. Then fold in the nuts, flour and salt with a wooden spoon.
Bake for about 25 minutes.
Remove from the oven and set aside to cool.
To make the caramel, put a medium, non-stick pan over a medium to high heat. Put the sugar in the pan then pour over the water. Do not stir but gently swirl the mixture until all the sugar has dissolved. The sugar will melt and begin to brown. Once it’s turned a deep amber colour after approximately 6 minutes, take the pan off the heat and immediately whisk in the butter to stop the cooking process. Then stir in the cream and salt.
Pour over the cooled sponge and put in the fridge for at least an hour so that the caramel can set.
Once the caramel is set melt the chocolate by breaking each type into pieces in separate bowls before placing them over saucepans with an inch or so of water in on a medium heat. Make sure the water does not touch the bottom of the bowls.
Keeping it in the baking tin, take the caramel covered sponge out of the fridge and pour the melted dark chocolate over the top. Tip the baking tray from side to side to ensure the chocolate gets into all the corners. Using a spoon, add blobs of the white chocolate onto the dark chocolate. Run a skewer or the tip of a knife through the chocolate from one side of the tin to the other back and forth to make the marbled effect.
Put back in the fridge to set for a couple of hours or overnight then remove the whole thing from the baking tray by grabbing the baking paper around the edges.
Warm a large knife then cut into bite size pieces and serve.