code: private ClientMessage invokeGetInternal(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 = PNCounterGetCodec.encodeRequest(name, observedClock.entrySet(), target);
              return invokeOnAddress(request, target);
          } catch (HazelcastException e) {
              logger.fine("Exception occurred while invoking operation on target " + target + ", choosing different target", e);
              if (excludedAddresses == EMPTY_ADDRESS_LIST) {
                  excludedAddresses = new ArrayList<Address>();
              }
              excludedAddresses.add(target);
              final Address newTarget = getCRDTOperationTarget(excludedAddresses);
              return invokeGetInternal(excludedAddresses, e, newTarget);
          }
      }
docs: Returns the current value of the counter.
  It will invoke client messages recursively on viable replica addresses
  until successful or the list of viable replicas is exhausted.
  Replicas with addresses contained in the {@code excludedAddresses} are
  skipped. If there are no viable replicas, this method will throw the
  {@code lastException} if not {@code null} or a
  {@link NoDataMemberInClusterException} if the {@code lastException} is
  {@code null}.
  
  @param excludedAddresses the addresses to exclude when choosing a replica
  address, must not be {@code null}
  @param lastException     the exception thrown from the last invocation of
  the {@code request} on a replica, may be {@code null}
  @return the result of the request invocation on a replica
  @throws NoDataMemberInClusterException if there are no replicas and the
  {@code lastException} is false