/// <summary>
        /// Initialises a new instance of the <see cref="PartitionNode"/> class.
        /// </summary>
        /// <param name="subscriberId">The subscriber identifier.</param>
        /// <param name="minId">The minimum identifier.</param>
        /// <param name="maxId">The maximum identifier.</param>
        public PartitionNode(int subscriberId, long minId, long maxId)
        {
            NodePartitionPair = new PartitionPair(subscriberId, minId, maxId);

            #region Set private fields

            SubscriberId = subscriberId;
            MinId = minId;
            MaxId = maxId;

            #endregion
        }
        /// <summary>
        /// Initialises a new instance of the <see cref="PartitionNode"/> class.
        /// </summary>
        /// <param name="nodePartitionPair">The node partition pair.</param>
        public PartitionNode(PartitionPair nodePartitionPair)
        {
            NodePartitionPair = nodePartitionPair;

            #region Set the properties with private set

            if (NodePartitionPair.Children.Item1.SubscriberId == nodePartitionPair.Children.Item2.SubscriberId)
            {
                SubscriberId = nodePartitionPair.Children.Item1.SubscriberId;
            }
            if (NodePartitionPair.Children.Item1.MinId == nodePartitionPair.Children.Item2.MinId)
            {
                MinId = nodePartitionPair.Children.Item1.MinId;
            }
            if (NodePartitionPair.Children.Item1.MaxId == nodePartitionPair.Children.Item2.MaxId)
            {
                MaxId = nodePartitionPair.Children.Item1.MaxId;
            }

            #endregion
        }