In a medium bowl, combine the egg yolks and cornstarch and set aside.
In a large liquid measuring cup or a bowl, combine the milk and the heavy cream. Set aside.
In a saucepan combine the brown sugar salt and water. Heat over medium heat. As soon as the mixture starts to boil vigorously around the edges, allow it to cook, without stirring, until darker brown, and just starting to smell caramelized, about 5-6 minutes. The sugar will bubble vigorously the whole time. If you have a candy thermometer, the butterscotch is ready when it registers around 240°F (116°C). (Be careful not to touch it; it is extremely hot.)
Immediately, pour the milk-cream mixture slowly into the caramel mixture. The mixture will bubble and steam and the butterscotch will harden up. Bring to a boil, whisking occasionally and scraping the edges of the pot to dissolve the hardened butterscotch then, reduce the heat to low.
In a slow and steady stream, whisk about 1/2 cup of the simmering butterscotch mixture into the reserved egg yolk mixture. Make sure to whisk constantly and vigorously to prevent the eggs from cooking like scrambled eggs.
Slowly pour the tempered egg yolk mixture into the pot, whisking constantly. Tun the heat to low and cook, continuing to whisk constantly, until large bubbles burst through the top and the mixture is thickened, about 30 seconds. Turn off the heat and whisk in the butter, vanilla extract and liquor (if using).
Cool for about 5 minutes and then, pour the pudding into serving glasses or bowls. Press a piece of plastic wrap onto the surface (to prevent a film from forming) and refrigerate until chilled, at least 6 hours or overnight.
When ready to serve, top the pudding with toppings and a pinch of flaky sea salt.