docs: public void setKey(String key) throws IOException {
      if (this.key != null) {
        throw new IOException("key already set");
      } else {
        this.key = Objects.requireNonNull(key, "key required");
      }
    }