This same pattern is used in quite a few places.  It might be worth throwing into an validator utility so you could do something like:
this.key = Validators.notEmpty("key", key);
Super minor, but I think it helps to de-clutter.  If I counted right, I think it chops about 400 lines :)