Is there anything in particular we gain from using all these generics? I thought `params object[] args` combined with the right `string.Format` would be Good Enough...