code: public void dispose() {
      try {
        if(sipProvider.getListeningPoints().length > 0)
            sipStack.deleteListeningPoint(sipProvider.getListeningPoints()[0]);
        sipProvider.removeSipListener(this);
        sipStack.deleteSipProvider(sipProvider);
        sipFactory.resetFactory();
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
docs: This method is used to tear down the SipStack object. All resources are freed up. Before
  calling this method, you should call the dispose() nethod on any SipPhones you've created using
  this sip stack.