public static ZoneYearOffset Read([NotNull] IDateTimeZoneReader reader)
        {
            Preconditions.CheckNotNull(reader, nameof(reader));
            int flags       = reader.ReadByte();
            var mode        = (TransitionMode)(flags >> 5);
            var dayOfWeek   = (flags >> 2) & 7;
            var advance     = (flags & 2) != 0;
            var addDay      = (flags & 1) != 0;
            int monthOfYear = reader.ReadCount();
            int dayOfMonth  = reader.ReadSignedCount();
            // The time of day is written as a number of milliseconds for historical reasons.
            var timeOfDay = LocalTime.FromMillisecondsSinceMidnight(reader.ReadMilliseconds());

            return(new ZoneYearOffset(mode, monthOfYear, dayOfMonth, dayOfWeek, advance, timeOfDay, addDay));
        }