docs: public <T> void setObject(DataKey<T> key, T object) {
          if (key == null) {
              throw new IllegalArgumentException("key must not be null");
          }
          if (object == null && !key.allowNull()) {
              throw new IllegalArgumentException("key \"" + key.getName() + "\" disallows null values but object was null");
          }
          data.put(key.getName(), object);
      }