code: public CRDTTimestampedLong getAndAdd(long delta, VectorClock observedTimestamps) {
          checkSessionConsistency(observedTimestamps);
          stateWriteLock.lock();
          try {
              checkNotMigrated();
              if (delta < 0) {
                  return getAndSubtract(-delta, observedTimestamps);
              }
              return getAndUpdate(delta, observedTimestamps, true);
          } finally {
              stateWriteLock.unlock();
          }
      }
docs: Adds the given value to the current value.
  <p>
  The method can throw a {@link ConsistencyLostException} when the state
  of this CRDT is not causally related to the observed timestamps. This
  means that it cannot provide the session guarantees of RYW (read your
  writes) and monotonic read.
  
  @param delta              the value to add
  @param observedTimestamps the vector clock last observed by the client of
  this counter
  @return the current counter value with the current counter vector clock
  @throws ConsistencyLostException if this replica cannot provide the
  session guarantees