code: def delete_vault(self, vault_id):
          
          # Implemented from template for
          # osid.resource.BinAdminSession.delete_bin_template
          if self._catalog_session is not None:
              return self._catalog_session.delete_catalog(catalog_id=vault_id)
          collection = JSONClientValidated('authorization',
                                           collection='Vault',
                                           runtime=self._runtime)
          if not isinstance(vault_id, ABCId):
              raise errors.InvalidArgument('the argument is not a valid OSID Id')
          for object_catalog in ['Authorization', 'Function', 'Qualifier', 'Vault']:
              obj_collection = JSONClientValidated('authorization',
                                                   collection=object_catalog,
                                                   runtime=self._runtime)
              if obj_collection.find({'assignedVaultIds': {'$in': [str(vault_id)]}}).count() != 0:
                  raise errors.IllegalState('catalog is not empty')
          collection.delete_one({'_id': ObjectId(vault_id.get_identifier())})
docs: Deletes a ``Vault``.
  
          arg:    vault_id (osid.id.Id): the ``Id`` of the ``Vault`` to
                  remove
          raise:  NotFound - ``vault_id`` not found
          raise:  NullArgument - ``vault_id`` is ``null``
          raise:  OperationFailed - unable to complete request
          raise:  PermissionDenied - authorization failure
          *compliance: mandatory -- This method must be implemented.*