It is less efficient if you want to do something other than throw, but since we just want to throw, we can skip the ContainsKey check and let the internal logic of Add do the throwing for us.

In the usual case, things are faster (no ContainsKey call). In the exceptional case things are slower because we throw twice. But who cares, it's the exceptional case after all.