docs: private ClientMessage invokeAddInternal(long delta, boolean getBeforeUpdate,
                                              List<Address> excludedAddresses,
                                              HazelcastException lastException,
                                              Address target) {
          if (target == null) {
              throw lastException != null
                      ? lastException
                      : new NoDataMemberInClusterException(
                      "Cannot invoke operations on a CRDT because the cluster does not contain any data members");
          }
          try {
              final ClientMessage request = PNCounterAddCodec.encodeRequest(
                      name, delta, getBeforeUpdate, observedClock.entrySet(), target);
              return invokeOnAddress(request, target);
          } catch (HazelcastException e) {
              logger.fine("Unable to provide session guarantees when sending operations to " + target
                      + ", choosing different target");
              if (excludedAddresses == EMPTY_ADDRESS_LIST) {
                  excludedAddresses = new ArrayList<Address>();
              }
              excludedAddresses.add(target);
              final Address newTarget = getCRDTOperationTarget(excludedAddresses);
              return invokeAddInternal(delta, getBeforeUpdate, excludedAddresses, e, newTarget);
          }
      }