/** Unregisters for the registered event with RIL */
 public void dispose(Handler h) {
   mCdmaSubscriptionSourceChangedRegistrants.remove(h);
   synchronized (sReferenceCountMonitor) {
     sReferenceCount--;
     if (sReferenceCount <= 0) {
       mCM.unregisterForCdmaSubscriptionChanged(this);
       mCM.unregisterForOn(this);
       mCM.unregisterForSubscriptionStatusChanged(this);
       sInstance = null;
     }
   }
 }
  /** Unregisters for the registered event with RIL */
  public void dispose(Handler handler) {
    if (null != handler) {
      mCdmaSubscriptionSourceChangedRegistrants.remove(handler);
    }

    mRef--;
    if (mRef <= 0) {
      mCM.unregisterForCdmaSubscriptionSourceChanged(this);
      mCM.unregisterForOn(this);
      mCM.unregisterForSubscriptionStatusChanged(this);
      mCdmaSSMInstances.remove(mCM);
    }
  }
 public void unregisterForVoiceCallEnded(Handler h) {
   voiceCallEndedRegistrants.remove(h);
 }
 public void unregisterForPsRestrictedDisabled(Handler h) {
   mPsRestrictDisabledRegistrants.remove(h);
 }
 public void unregisterForNetworkAttached(Handler h) {
   mNetworkAttachedRegistrants.remove(h);
 }
 public void unregisterForDataConnectionDetached(Handler h) {
   mDetachedRegistrants.remove(h);
 }
 public void unregisterForRoamingOff(Handler h) {
   mRoamingOffRegistrants.remove(h);
 }
 public void unregisterForSuppServiceNotification(Handler h) {
   mSsnRegistrants.remove(h);
   if (mSsnRegistrants.size() == 0) mCM.setSuppServiceNotifications(false, null);
 }
 public void unregisterForDataRegStateOrRatChanged(Handler h) {
   mDataRegStateOrRatChangedRegistrants.remove(h);
 }
 public void unregisterForDataRoamingOn(Handler h) {
   mDataRoamingOnRegistrants.remove(h);
 }
 public void unregisterForVoiceRoamingOn(Handler h) {
   mVoiceRoamingOnRegistrants.remove(h);
 }
 void unregisterForModemProfileReady(Handler h) {
   mModemDataProfileRegistrants.remove(h);
 }
 @Override
 public void unregisterForVoiceCallStarted(Handler h) {
   mVoiceCallStartedRegistrants.remove(h);
 }