@zian: It should be Cup<T> where T : Beverage, new()

Now Cup<T> can fill itself. Smiley