code: public void deactivate(final Object maintainer) throws InterruptedException, CouldNotPerformException, VerificationFailedException {
          if (this.maintainer.equals(maintainer)) {
              synchronized (maintainerLock) {
                  unlock(maintainer);
                  deactivate();
                  lock(maintainer);
              }
          } else {
              throw new VerificationFailedException("[" + maintainer + "] is not the current maintainer of this remote");
          }
      }
docs: Atomic deactivate which makes sure that the maintainer stays the same.
  
  @param maintainer the current maintainer of this remote
  
  @throws InterruptedException        if deactivation is interrupted
  @throws CouldNotPerformException    if deactivation fails
  @throws VerificationFailedException is thrown if the given maintainer does not match the current one