code: public Waiter<DescribeReplicationTasksRequest> replicationTaskDeleted() {
  
          return new WaiterBuilder<DescribeReplicationTasksRequest, DescribeReplicationTasksResult>()
                  .withSdkFunction(new DescribeReplicationTasksFunction(client))
                  .withAcceptors(new ReplicationTaskDeleted.IsReadyMatcher(), new ReplicationTaskDeleted.IsCreatingMatcher(),
                          new ReplicationTaskDeleted.IsStoppedMatcher(), new ReplicationTaskDeleted.IsRunningMatcher(),
                          new ReplicationTaskDeleted.IsFailedMatcher(), new ReplicationTaskDeleted.IsResourceNotFoundFaultMatcher())
                  .withDefaultPollingStrategy(new PollingStrategy(new MaxAttemptsRetryStrategy(60), new FixedDelayStrategy(15)))
                  .withExecutorService(executorService).build();
      }
docs: Builds a ReplicationTaskDeleted waiter by using custom parameters waiterParameters and other parameters defined
  in the waiters specification, and then polls until it determines whether the resource entered the desired state
  or not, where polling criteria is bound by either default polling strategy or custom polling strategy.