/**
         * onCallStartFailed will be invoked when: case 1) Dialing fails case 2) Ringing call is
         * disconnected by local or remote user
         */
        @Override
        public void onCallStartFailed(ImsCall imsCall, ImsReasonInfo reasonInfo) {
          if (DBG) log("onCallStartFailed reasonCode=" + reasonInfo.getCode());

          if (mPendingMO != null) {
            // To initiate dialing circuit-switched call
            if (reasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED
                && mBackgroundCall.getState() == ImsPhoneCall.State.IDLE
                && mRingingCall.getState() == ImsPhoneCall.State.IDLE) {
              mForegroundCall.detach(mPendingMO);
              removeConnection(mPendingMO);
              mPendingMO.finalize();
              mPendingMO = null;
              mPhone.initiateSilentRedial();
              return;
            } else {
              int cause = getDisconnectCauseFromReasonInfo(reasonInfo);
              processCallStateChange(imsCall, ImsPhoneCall.State.DISCONNECTED, cause);
            }
            mPendingMO = null;
          }
        }