<commit_before>// Copyright 2009 The Noda Time Authors. All rights reserved.
// Use of this source code is governed by the Apache License 2.0,
// as found in the LICENSE.txt file.

using System;
using NodaTime.Annotations;
using NodaTime.TimeZones.IO;
using NodaTime.Utility;
using JetBrains.Annotations;

namespace NodaTime.TimeZones
{
    /// <summary>
    /// Most time zones have a relatively small set of transitions at their start until they finally 
    /// settle down to either a fixed time zone or a daylight savings time zone. This provides the
    /// container for the initial zone intervals and a pointer to the time zone that handles all of
    /// the rest until the end of time.
    /// </summary>
    internal sealed class PrecalculatedDateTimeZone : DateTimeZone
    {
        private readonly ZoneInterval[] periods;
        private readonly IZoneIntervalMapWithMinMax tailZone;
        /// <summary>
        /// The first instant covered by the tail zone, or Instant.AfterMaxValue if there's no tail zone.
        /// </summary>
        private readonly Instant tailZoneStart;
        private readonly ZoneInterval firstTailZoneInterval;

        /// <summary>
        /// Initializes a new instance of the <see cref="PrecalculatedDateTimeZone"/> class.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="intervals">The intervals before the tail zone.</param>
        /// <param name="tailZone">The tail zone - which can be any IZoneIntervalMap for normal operation,
        /// but must be a StandardDaylightAlternatingMap if the result is to be serialized.</param>
        [VisibleForTesting]
        internal PrecalculatedDateTimeZone([NotNull] string id, [NotNull] ZoneInterval[] intervals, IZoneIntervalMapWithMinMax tailZone)
            : base(id, false,
                   ComputeOffset(intervals, tailZone, Offset.Min),
                   ComputeOffset(intervals, tailZone, Offset.Max))
        {
            this.tailZone = tailZone;
            this.periods = intervals;
            this.tailZone = tailZone;<commit_msg>- remove duplicate field assignment<commit_after>// Copyright 2009 The Noda Time Authors. All rights reserved.
// Use of this source code is governed by the Apache License 2.0,
// as found in the LICENSE.txt file.

using System;
using NodaTime.Annotations;
using NodaTime.TimeZones.IO;
using NodaTime.Utility;
using JetBrains.Annotations;

namespace NodaTime.TimeZones
{
    /// <summary>
    /// Most time zones have a relatively small set of transitions at their start until they finally 
    /// settle down to either a fixed time zone or a daylight savings time zone. This provides the
    /// container for the initial zone intervals and a pointer to the time zone that handles all of
    /// the rest until the end of time.
    /// </summary>
    internal sealed class PrecalculatedDateTimeZone : DateTimeZone
    {
        private readonly ZoneInterval[] periods;
        private readonly IZoneIntervalMapWithMinMax tailZone;
        /// <summary>
        /// The first instant covered by the tail zone, or Instant.AfterMaxValue if there's no tail zone.
        /// </summary>
        private readonly Instant tailZoneStart;
        private readonly ZoneInterval firstTailZoneInterval;

        /// <summary>
        /// Initializes a new instance of the <see cref="PrecalculatedDateTimeZone"/> class.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="intervals">The intervals before the tail zone.</param>
        /// <param name="tailZone">The tail zone - which can be any IZoneIntervalMap for normal operation,
        /// but must be a StandardDaylightAlternatingMap if the result is to be serialized.</param>
        [VisibleForTesting]
        internal PrecalculatedDateTimeZone([NotNull] string id, [NotNull] ZoneInterval[] intervals, IZoneIntervalMapWithMinMax tailZone)
            : base(id, false,
                   ComputeOffset(intervals, tailZone, Offset.Min),
                   ComputeOffset(intervals, tailZone, Offset.Max))
        {
            this.periods = intervals;
            this.tailZone = tailZone;
{'fraction_non_alphanumeric': 0.08485139022051774, 'fraction_numerical': 0.0028763183125599234, 'mean_word_length': 2.6541155866900175, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 29, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5557971', 'n_tokens_mistral': 1057, 'n_tokens_neox': 1018, 'n_words': 413}