<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def create(self) -> None: """ Persist the wallet. Raise ExtantWallet if it already exists. Actuators should prefer WalletManager.create() to calling this method directly - the wallet manager filters wallet configuration through preset defaults. """


        LOGGER.debug('Wallet.create >>>')

        try:
            await wallet.create_wallet(
                config=json.dumps(self.config),
                credentials=json.dumps(self.access_creds))
            LOGGER.info('Created wallet %s', self.name)
        except IndyError as x_indy:
            if x_indy.error_code == ErrorCode.WalletAlreadyExistsError:
                LOGGER.debug('Wallet.create <!< Wallet %s already exists', self.name)
                raise ExtantWallet('Wallet {} already exists'.format(self.name))
            LOGGER.debug(
                'Wallet.create <!< indy error code %s on creation of wallet %s',
                x_indy.error_code,
                self.name)
            raise

        auto_remove = self.auto_remove
        self.auto_remove = False  # defer past this creation process
        async with self:
            did_info = await self.create_local_did(
                self._von_config.get('seed', None),
                self._von_config.get('did', None),
                {'anchor': True})
            self.did = did_info.did
            self.verkey = did_info.verkey
            if 'link_secret_label' in self._von_config:
                await self.create_link_secret(self._von_config['link_secret_label'])
        self.auto_remove = auto_remove

        LOGGER.debug('Wallet.create <<<')