docs: public boolean trySetValue(VersionedValue<byte[]> previous, byte[] newValue) throws Exception
      {
          Preconditions.checkState(state.get() == State.STARTED, "not started");
  
          VersionedValue<byte[]> current = currentValue.get();
          if ( previous.getVersion() != current.getVersion() || !Arrays.equals(previous.getValue(), current.getValue()) )
          {
              return false;
          }
  
          try
          {
              Stat result = client.setData().withVersion(previous.getVersion()).forPath(path, newValue);
              updateValue(result.getVersion(), Arrays.copyOf(newValue, newValue.length));
              return true;
          }
          catch ( KeeperException.BadVersionException ignore )
          {
              // ignore
          }
  
          readValue();
          return false;
      }