docs: private void invokeMigrationOperation(ReplicaFragmentMigrationState migrationState, boolean firstFragment) {
          boolean lastFragment = !fragmentedMigrationEnabled || !namespacesContext.hasNext();
          Operation operation = new MigrationOperation(migrationInfo,
                  firstFragment ? completedMigrations : Collections.emptyList(),
                  partitionStateVersion, migrationState, firstFragment, lastFragment);
  
          ILogger logger = getLogger();
          if (logger.isFinestEnabled()) {
              Set<ServiceNamespace> namespaces = migrationState != null
                      ? migrationState.getNamespaceVersionMap().keySet() : Collections.emptySet();
              logger.finest("Invoking MigrationOperation for namespaces " + namespaces + " and " + migrationInfo
                      + ", lastFragment: " + lastFragment);
          }
  
          NodeEngine nodeEngine = getNodeEngine();
          InternalPartitionServiceImpl partitionService = getService();
  
          Address target = migrationInfo.getDestinationAddress();
          nodeEngine.getOperationService()
                  .createInvocationBuilder(InternalPartitionService.SERVICE_NAME, operation, target)
                  .setExecutionCallback(new MigrationCallback())
                  .setResultDeserialized(true)
                  .setCallTimeout(partitionService.getPartitionMigrationTimeout())
                  .setTryCount(InternalPartitionService.MIGRATION_RETRY_COUNT)
                  .setTryPauseMillis(InternalPartitionService.MIGRATION_RETRY_PAUSE)
                  .invoke();
      }