docs: private CRDTTimestampedLong getAndUpdate(long delta, VectorClock observedTimestamps, boolean isAddition) {
          if (delta < 0) {
              throw new IllegalArgumentException("Delta must be greater than or equal to 0");
          }
          final long nextTimestamp = stateVectorClock.getTimestampForReplica(localReplicaId) + 1;
          final long[] pnValues = state.containsKey(localReplicaId) ? state.get(localReplicaId) : new long[]{0, 0};
          pnValues[isAddition ? 0 : 1] += delta;
          state.put(localReplicaId, pnValues);
          stateVectorClock.setReplicaTimestamp(localReplicaId, nextTimestamp);
          final CRDTTimestampedLong current = get(observedTimestamps);
          current.setValue(isAddition ? current.getValue() - delta : current.getValue() + delta);
          return current;
      }