protected override void DestroyInternal()
    {
        base.DestroyInternal();

        if ((Polity != null) && Polity.StillPresent)
        {
            Tribe tribe = Polity as Tribe;

            long triggerDate = CalculateTriggerDate(tribe);
            if (triggerDate < 0)
            {
                // skip reseting the event since the trigger date is invalid
                return;
            }

            if (triggerDate <= tribe.World.CurrentDate)
            {
                throw new System.Exception(
                          "Trigger Date (" + triggerDate +
                          ") less or equal to current date: " + tribe.World.CurrentDate);
            }

            tribe.ResetEvent(FosterTribeRelationDecisionEventId, triggerDate);
        }
    }