docs: @Override
      public void saveAndIncrement(T data) {
          Either<Void, T> oldData = this.data;
          VersionedKey newVersionedKey = increment();
          logger.info("Saving data with key {}, new version is {}", key, newVersionedKey.toJson());
          connection.put(newVersionedKey.toJson(), new Data(
                                                            data, new Date(), newVersionedKey.toJson()));
          connection.put(key, newVersionedKey.toJson());
          try {
              this.data = Either.right(data);
              delete(versionedKey);
  
          } catch (Throwable t) {
              this.data = oldData;
          } finally {
              versionedKey = newVersionedKey.toJson();
          }
      }