In a nonreactive saucepan, combine 2 cups milk and sugar. Bring the mixture to a boil to dissolve the sugar, then reduce the heat to a medium-low. Whisk in the chocolate pieces and whisk until the chocolate is completely melted. In a small bowl, whisk the yolks together.
Temper the yolks into the chocolate mixture. In another small bowl, whisk the remaining milk and cornstarch together for a slurry. Slowly add the slurry into the hot chocolate mixture and mix well to blend. Bring the mixture to a boil and cook, stirring constantly, until the mixture is thick. Remove from the heat and stir in the vanilla and butter.
Pour the pudding into a glass bowl. Place a piece of plastic wrap directly on top of the pudding to prevent a skin from forming. Place the pudding in the refrigerator and chill for about 2 hours. Whisk the pudding until light and fluffy. Pour the pudding into 4 wine glasses and place in the refrigerator. Top each pudding with the whipped cream and garnish with chocolate shavings.
Yield: 4 servings