It looks like error message will be null in the majority of cases, meaning that most of the call sites will have to have a `null` parameter added on the end. The code can be kept cleaner by either adding another constructor that does not have `errorMessage` on the end (that can just delegate to this one), or by making a separate method like `setErrorMessage(String errorMessage)`.

Ideally, we would switch to a builder pattern for anything with this many arguments, so that we can easily tell what each argument means at the call site.