Don't create unnecessary Dictionary objects
Use InvalidOperationException

ArgumentException should be used when an the problem is the format of a
specific argument. InvalidOpEx fits the current situation better.