/**
   * Destroys the RecoveryCoordinatorImpl object.
   *
   * @param
   * @return
   * @see
   */
  final synchronized void destroy() {

    try {
      if (poa != null && thisRef != null) {
        poa.deactivate_object(poa.reference_to_id(thisRef));
        thisRef = null;
      } else {
        // BUGFIX(Ram J) It is possible that the
        // RecoveryCoordinator object was activated via the activation
        // daemon. In that case, there is no guarantee
        // that poa and thisRef are set to a meaningful value.
        // So, try to deactivate the RecoveryCoordinator object anyway.

        POA rcPoa = null;
        if (poa == null) {
          rcPoa = Configuration.getPOA("RecoveryCoordinator" /*#Frozen*/);
        } else {
          rcPoa = poa;
        }

        if (thisRef == null) {
          rcPoa.deactivate_object(rcPoa.servant_to_id(this));
        } else {
          rcPoa.deactivate_object(rcPoa.reference_to_id(thisRef));
          thisRef = null;
        }
      }
    } catch (Exception exc) {
      _logger.log(Level.WARNING, "jts.object_destroy_error", "RecoveryCoordinator");
    }

    // finalize();
    globalTID = null;
    internalSeq = 0;
  }