You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: waiters.rb
    path of file: ./repos/aws-sdk-ruby/gems/aws-sdk-ssm/lib/aws-sdk-ssm
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

# WARNING ABOUT GENERATED CODE
#
# This file is generated. See the contributing guide for more information:
# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
#
# WARNING ABOUT GENERATED CODE

require 'aws-sdk-core/waiters'

module Aws::SSM
  # Waiters are utility methods that poll for a particular state to occur
  # on a client. Waiters can fail after a number of attempts at a polling
  # interval defined for the service client.
  #
  # For a list of operations that can be waited for and the
  # client methods called for each operation, see the table below or the
  # {Client#wait_until} field documentation for the {Client}.
  #
  # # Invoking a Waiter
  # To invoke a waiter, call #wait_until on a {Client}. The first parameter
  # is the waiter name, which is specific to the service client and indicates
  # which operation is being waited for. The second parameter is a hash of
  
    
      def initialize(options)
        @client = options.fetch(:client)
        @waiter = Aws::Waiters::Waiter.new({
          max_attempts: 20,
          delay: 5,
          poller: Aws::Waiters::Poller.new(
            operation_name: :get_command_invocation,
            acceptors: [
              {
                "expected" => "Pending",
                "matcher" => "path",
                "state" => "retry",
                "argument" => "status"
              },
              {
                "expected" => "InProgress",
                "matcher" => "path",
                "state" => "retry",
                "argument" => "status"
              },
              {
                "expected" => "Delayed",
                "matcher" => "path",
                "state" => "retry",
                "argument" => "status"
              },
              {
                "expected" => "Success",
                "matcher" => "path",
                "state" => "success",
                "argument" => "status"
              },
              {
                "expected" => "Cancelled",
                "matcher" => "path",
                "state" => "failure",
                "argument" => "status"
              },
              {
                "expected" => "TimedOut",
                "matcher" => "path",
                "state" => "failure",
                "argument" => "status"
              },
              {
                "expected" => "Failed",
                "matcher" => "path",
                "state" => "failure",
                "argument" => "status"
              },
              {
                "expected" => "Cancelling",
                "matcher" => "path",
                "state" => "failure",
                "argument" => "status"
              },
              {
                "state" => "retry",
                "matcher" => "error",
                "expected" => "InvocationDoesNotExist"
              }
            ]
          )
        }.merge(options))
      end