code: def claim(self, owner, access):
          
          debuglog("%s claim(%s, %s)" % (self, owner, access.mode))
          assert owner is not None
          assert self.isAvailable(owner, access), "ask for isAvailable() first"
  
          assert isinstance(access, LockAccess)
          assert access.mode in ['counting', 'exclusive']
          self.waiting = [w for w in self.waiting if w[0] is not owner]
          self._addOwner(owner, access)
  
          debuglog(" %s is claimed '%s'" % (self, access.mode))
docs: Claim the lock (lock must be available)