code: public boolean removeBuddy(Request req, long timeout) {
      initErrorInfo();
  
      if (parent.retireBuddy(targetUri) == null) {
        setReturnCode(SipSession.INVALID_ARGUMENT);
        setErrorMessage("Buddy removal for URI " + targetUri + " failed, not found in buddy list.");
        return false;
      }
  
      if (endSubscription(req, timeout, parent.getProxyHost() != null,
          "Buddy removed from contact list") == true) {
        return true;
      }
  
      // unsubscribe failed
      return false;
    }
docs: This method is the same as removeBuddy(eventId, timeout) except that instead of creating the
  SUBSCRIBE request from parameters passed in, the given request message parameter is used for
  sending out the SUBSCRIBE message if the subscription is active.
  
  <p>
  The Request parameter passed into this method should come from calling createSubscribeMessage()
  - see that javadoc. The event "id" in the given request will be used subsequently for error
  checking the SUBSCRIBE response and NOTIFY request from the server.