/// <summary>
		///     Generate a <see cref="PagerRenderingList" /> for a series of <see cref="PagerItem" />.
		/// </summary>
		/// <param name="items">The collection of <see cref="PagerItem" /> which are included in the list.</param>
		/// <param name="context">The generation context.</param>
		/// <returns>The generated <see cref="PagerRenderingList" /> instance.</returns>
		private PagerRenderingList GenerateRenderingListCore(IEnumerable<PagerItem> items, PagerGenerationContext context)
		{
			var optionsCache = new Dictionary<PagerItemType, PagerItemOptions>();

			var renderingItemList = new List<PagerRenderingItem>();

			// Owner
			var result = new PagerRenderingList
			{
				Settings = new Dictionary<string, string>(context.Options.AdditionalSettings)
			};

			foreach (var item in items)
			{
				PagerItemOptions itemOptions;

				// Try to get cached options, or create a new option instance
				if (!optionsCache.TryGetValue(item.ItemType, out itemOptions))
				{
					itemOptions = context.Options.ItemOptions.GetMergedOptionsFor(item);
					optionsCache[item.ItemType] = itemOptions;
				}

				// Generate item context
				var itemContext = new PagerItemGenerationContext(context, item, itemOptions);

				// Generate item and add to list
				var renderingItem = GenerateRenderingItem(result, itemContext);
				renderingItemList.Add(renderingItem);
			}

			// Result
			result.Items = new ReadOnlyCollection<PagerRenderingItem>(renderingItemList);
			return result;
		}
		/// <summary>
		///     Generate a <see cref="PagerRenderingItem" /> for the current pager item.
		/// </summary>
		/// <param name="list">The ownner list of the new item.</param>
		/// <param name="context">The generation context.</param>
		/// <returns>The generated <see cref="PagerRenderingItem" /> instance.</returns>
		private PagerRenderingItem GenerateRenderingItem(PagerRenderingList list, PagerItemGenerationContext context)
		{
			return new PagerRenderingItem(list)
			{
				Content = context.PagerItemOptions.Content?.GenerateContent(context),
				Link = context.PagerItemOptions.Link?.GenerateLink(context),
				Settings = new Dictionary<string, string>(context.PagerItemOptions.AdditionalSettings),
				State = GetRenderingItemState(context)
			};
		}