/// <summary>
		///		Trace requests / responses to the platform WebAPI event-source.
		/// </summary>
		/// <param name="clientBuilder">
		///		The HTTP client builder.
		/// </param>
		/// <param name="messageComponents">
		///		An optional combination of <see cref="TraceMessageComponents"/> flags indicating the message components to trace.
		/// 
		///		Defaults to <see cref="TraceMessageComponents.All"/>.
		/// </param>
		/// <returns>
		///		The client builder (enables inline use / method chaining).
		/// </returns>
		public static HttpClientBuilder WithTracingToEtw(this HttpClientBuilder clientBuilder, TraceMessageComponents messageComponents = TraceMessageComponents.All)
		{
			if (clientBuilder == null)
				throw new ArgumentNullException(nameof(clientBuilder));

			return clientBuilder.AddHandlerAfter<EtwTraceMessageHandler, ActivityCorrelationClientMessageHandler>(
				() => new EtwTraceMessageHandler(messageComponents)
			);
		}
		/// <summary>
		///		Create a new <see cref="TraceMessageHandler"/>.
		/// </summary>
		/// <param name="enabledComponents">
		///		Components of messages to be traced.
		/// </param>
		public EtwTraceMessageHandler(TraceMessageComponents enabledComponents)
			: base(enabledComponents)
		{
		}
		/// <summary>
		///		Determine whether the specified message component(s) be traced.
		/// </summary>
		/// <param name="messageComponent">
		///		One or more <see cref="TraceMessageComponents"/> flags indicating the message component(s).
		/// </param>
		/// <returns>
		///		<c>true</c>, if the message component(s) should be traced; otherwise, <c>false</c>.
		/// </returns>
		protected bool ShouldTrace(TraceMessageComponents messageComponent)
		{
			switch (_enabledComponents)
			{
				case TraceMessageComponents.None:
				{
					return false;
				}
				case TraceMessageComponents.All:
				{
					return true;
				}
				default:
				{
					return (_enabledComponents & messageComponent) != 0;
				}
			}
		}
		/// <summary>
		///		Create a new <see cref="TraceMessageHandler"/>.
		/// </summary>
		/// <param name="enabledComponents">
		///		Components of messages to be traced.
		/// </param>
		protected TraceMessageHandler(TraceMessageComponents enabledComponents)
		{
			_enabledComponents = enabledComponents;
		}