If you're using `opts.fetch` then your YARD tags should include `@raise [KeyError] unless <key> is given` for each <key> like `:add_code` you fetch.  I would actually recommend using ActiveModel::Validation as that allows you to check for all expected attributes at once so that users of this class don't have to fix one exception at a time.  I have done such things on my module caching branches.  I can show you how to do it hear.