code: private Address getCRDTOperationTarget(Collection<Address> excludedAddresses) {
          if (currentTargetReplicaAddress != null && !excludedAddresses.contains(currentTargetReplicaAddress)) {
              return currentTargetReplicaAddress;
          }
  
          synchronized (targetSelectionMutex) {
              if (currentTargetReplicaAddress == null || excludedAddresses.contains(currentTargetReplicaAddress)) {
                  currentTargetReplicaAddress = chooseTargetReplica(excludedAddresses);
              }
          }
          return currentTargetReplicaAddress;
      }
docs: Returns the target on which this proxy should invoke a CRDT operation.
  On first invocation of this method, the method will choose a target
  address and return that address on future invocations. Replicas with
  addresses contained in the {@code excludedAddresses} list are excluded
  and if the chosen replica is in this list, a new replica is chosen and
  returned on future invocations.
  The method may return {@code null} if there are no viable target addresses.
  
  @param excludedAddresses the addresses to exclude when choosing a replica
  address, must not be {@code null}
  @return a CRDT replica address or {@code null} if there are no viable
  addresses