/**
   * Sets the fields based on deserializer.
   *
   * @param deserializer The deserializer.
   */
  public void deserialize(final Deserializer deserializer, final boolean remoteIsOptional) {
    this.setLanguage(deserializer.readString("language"));
    if (remoteIsOptional) {
      this.setNisEndpoint(deserializer.readOptionalObject("remoteServer", NodeEndpoint::new));
    } else {
      this.setNisEndpoint(deserializer.readObject("remoteServer", NodeEndpoint::new));
    }
    this.setNisBootInfo(deserializer.readObject("nisBootInfo", NisBootInfo::new));

    this.setFirstStart(deserializer.readOptionalInt("firstStart"));
  }