'Note that the WaiterModel takes ownership of the waiter_config.
It may or may not mutate the waiter_config.  If this is a concern,
it is best to make a copy of the waiter config before passing it to
the WaiterModel.
:type waiter_config: dict
:param waiter_config: The loaded waiter config
from the <service>*.waiters.json file.  This can be
obtained from a botocore Loader object as well.'

def __init__(self, waiter_config):

    self._waiter_config = waiter_config['waiters']
    version = waiter_config.get('version', 'unknown')
    self._verify_supported_version(version)
    self.version = version
    self.waiter_names = list(sorted(waiter_config['waiters'].keys()))
