/// <summary>
        /// Creates a time zone transition based on the specified transition time.
        /// </summary>
        /// <param name="timeZoneDefinition">The time zone definition that will own the transition.</param>
        /// <param name="targetPeriod">The period the transition will target.</param>
        /// <param name="transitionTime">The transition time to initialize from.</param>
        /// <returns>A TimeZoneTransition.</returns>
        internal static TimeZoneTransition CreateTimeZoneTransition(
            TimeZoneDefinition timeZoneDefinition,
            TimeZonePeriod targetPeriod,
            TransitionTime transitionTime)
        {
            TimeZoneTransition transition;

            if (transitionTime.IsFixedDateRule)
            {
                transition = new AbsoluteDayOfMonthTransition(timeZoneDefinition, targetPeriod);
            }
            else
            {
                transition = new RelativeDayOfMonthTransition(timeZoneDefinition, targetPeriod);
            }

            transition.InitializeFromTransitionTime(transitionTime);

            return(transition);
        }
        /// <summary>
        /// Creates a time zone transition based on the specified transition time.
        /// </summary>
        /// <param name="timeZoneDefinition">The time zone definition that will own the transition.</param>
        /// <param name="targetPeriod">The period the transition will target.</param>
        /// <param name="transitionTime">The transition time to initialize from.</param>
        /// <returns>A TimeZoneTransition.</returns>
        internal static TimeZoneTransition CreateTimeZoneTransition(
            TimeZoneDefinition timeZoneDefinition,
            TimeZonePeriod targetPeriod,
            TimeZoneInfo.TransitionTime transitionTime)
        {
            TimeZoneTransition transition;

            if (transitionTime.IsFixedDateRule)
            {
                transition = new AbsoluteDayOfMonthTransition(timeZoneDefinition, targetPeriod);
            }
            else
            {
                transition = new RelativeDayOfMonthTransition(timeZoneDefinition, targetPeriod);
            }

            transition.InitializeFromTransitionTime(transitionTime);

            return transition;
        }