RegisterAndProcessBundleOperation extends Operation { @Override public boolean supportsRestart() { return true; } RegisterAndProcessBundleOperation(
      IdGenerator idGenerator,
      InstructionRequestHandler instructionRequestHandler,
      StateDelegator beamFnStateDelegator,
      RegisterRequest registerRequest,
      Map<String, DataflowOperationContext> ptransformIdToOperationContext,
      Map<String, DataflowStepContext> ptransformIdToSystemStepContext,
      Map<String, SideInputReader> ptransformIdToSideInputReader,
      Table<String, String, PCollectionView<?>> ptransformIdToSideInputIdToPCollectionView,
      Map<String, NameContext> pcollectionIdToNameContext,
      OperationContext context); synchronized String getProcessBundleInstructionId(); String getCurrentProcessBundleInstructionId(); @Override void start(); @Override void finish(); @Override void abort(); Map<String, NameContext> getPCollectionIdToNameContext(); Map<String, DataflowStepContext> getPtransformIdToUserStepContext(); CompletionStage<BeamFnApi.ProcessBundleProgressResponse> getProcessBundleProgress(); CompletionStage<List<MonitoringInfo>> getFinalMonitoringInfos(); boolean hasFailed(); List<MonitoringInfo> findIOPCollectionMonitoringInfos(
      Iterable<MonitoringInfo> monitoringInfos); @Override boolean supportsRestart(); @Override String toString();  }
@Test public void testSupportsRestart() { new RegisterAndProcessBundleOperation( IdGenerators.decrementingLongs(), new TestInstructionRequestHandler() { @Override public CompletionStage<InstructionResponse> handle(InstructionRequest request) { CompletableFuture<InstructionResponse> responseFuture = new CompletableFuture<>(); completeFuture(request, responseFuture); return responseFuture; } }, mockBeamFnStateDelegator, REGISTER_REQUEST, ImmutableMap.of(), ImmutableMap.of(), ImmutableMap.of(), ImmutableTable.of(), ImmutableMap.of(), mockContext) .supportsRestart(); }