internal static unsafe ChaosScheduleDescription FromNative(IntPtr pointer)
        {
            var nativeDescription = *(NativeTypes.FABRIC_CHAOS_SCHEDULE_DESCRIPTION *)pointer;
            var chaosSchedule     = ChaosSchedule.FromNative(nativeDescription.Schedule);
            var version           = (int)nativeDescription.Version;

            return(new ChaosScheduleDescription(version, chaosSchedule));
        }
        /// <summary>
        /// <para>Initializes a new instance of the <see cref="System.Fabric.Chaos.DataStructures.ChaosScheduleDescription" /> class with a provided schedule and version.</para>
        /// </summary>
        /// <param name="version">The version of the schedule.</param>
        /// <param name="schedule">The schedule for scheduling runs of Chaos.</param>
        public ChaosScheduleDescription(int version, ChaosSchedule schedule)
        {
            if (version < 0)
            {
                throw new System.ArgumentException(
                          string.Format(
                              StringResources.ChaosScheduler_ScheduleDescriptionVersionIsNegative,
                              version),
                          "version");
            }

            if (schedule == null)
            {
                throw new System.ArgumentNullException(
                          "Schedule",
                          StringResources.ChaosScheduler_ScheduleIsNull);
            }

            this.Version  = version;
            this.Schedule = schedule;
        }