docs: def _bind_sources_to_destination(self):
          # type: (SyncCopy) ->
          #        Tuple[blobxfer.models.azure.StorageEntity,
          #        blobxfer.models.azure.StorageEntity]
          """Bind source storage entity to destination storage entities
          :param SyncCopy self: this
          :rtype: tuple
          :return: (source storage entity, destination storage entity)
          """
          seen = set()
          # iterate through source paths to download
          for src in self._spec.sources:
              for src_ase in src.files(
                      self._creds, self._spec.options,
                      self._general_options.dry_run):
                  # generate copy destinations for source
                  dest = [
                      dst_ase for dst_ase in
                      self._generate_destination_for_source(src_ase)
                  ]
                  if len(dest) == 0:
                      continue
                  primary_dst = dest[0]
                  uid = blobxfer.operations.synccopy.SyncCopy.create_deletion_id(
                      primary_dst._client, primary_dst.container,
                      primary_dst.name)
                  if uid in seen:
                      raise RuntimeError(
                          'duplicate destination entity detected: {}/{}'.format(
                              primary_dst._client.primary_endpoint,
                              primary_dst.path))
                  seen.add(uid)
                  # add to exclusion set
                  if self._spec.options.delete_extraneous_destination:
                      self._delete_exclude.add(uid)
                  if len(dest[1:]) > 0:
                      if primary_dst.replica_targets is None:
                          primary_dst.replica_targets = []
                      primary_dst.replica_targets.extend(dest[1:])
                      # check replica targets for duplicates
                      for rt in primary_dst.replica_targets:
                          ruid = (
                              blobxfer.operations.synccopy.SyncCopy.
                              create_deletion_id(
                                  rt._client, rt.container, rt.name)
                          )
                          if ruid in seen:
                              raise RuntimeError(
                                  ('duplicate destination entity detected: '
                                   '{}/{}').format(
                                       rt._client.primary_endpoint, rt.path))
                          seen.add(ruid)
                          # add replica targets to deletion exclusion set
                          if self._spec.options.delete_extraneous_destination:
                              self._delete_exclude.add(ruid)
                  yield src_ase, primary_dst