/// <summary>
 /// Starts a new server channel.
 /// </summary>
 /// <param name="provider">The channel provider, on which to send
 /// the notification that a server is being constructed</param>
 /// <param name="identifier">A semi-unique identifier for this
 /// "bundle" that is being constructed</param>
 /// <returns>The constructed server channel, or <c>null</c> if there
 /// was no listeners for server channels registered on <paramref name="provider"/></returns>
 public static ServerChannel Start(IChannelProvider provider, string identifier)
 {
     Contracts.CheckValue(provider, nameof(provider));
     provider.CheckNonWhiteSpace(identifier, nameof(identifier));
     using (var pipe = provider.StartPipe <IPendingBundleNotification>("Server"))
     {
         var sc = new ServerChannel(provider, identifier);
         pipe.Send(sc);
         return(sc.ThisIfActiveOrNull);
     }
 }