anchor.diff:              | true, s when s.NegotiationCompleted -> [ s ]
               | _ -> []
       
  -    member x.Shutdown(force) = 
  +    member __.Shutdown(force) =
           async { 
               let getCloseTask (k : KeyValuePair<_, IXmppClient>) = 
                   async {
  
positive.code:     let addClientConnection (jid : JabberId) (xmppClient : IXmppClient) = 
          // Note don't use xmppClient as we are within a context (possibly within the NegotiationComplete event)
          let bareId = jid.BareId
          let resources = clientConnections.GetOrAdd(bareId, fun b -> new ConcurrentDictionary<_, _>())
          match jid.Resource with
          | None -> failwith "no resource attached to client"
          | Some r -> 
              resources.AddOrUpdate(r, xmppClient, fun res old -> closeOldWithConflict old xmppClient) |> ignore
              Log.Info(fun () -> L "Client connected and added to connections: %s" jid.FullId)
      
      let addServerConnection (jid : JabberId) (xmppClient : IXmppClient) = 
          let bareId = jid.BareId
          outgoingS2sConnections.AddOrUpdate(bareId, xmppClient, fun s c -> closeOldWithConflict c xmppClient) |> ignore
      
      let addConnection (streamType : StreamType) (jid : JabberId) (xmppClient : IXmppClient)  = 
          (if streamType.OnClientStream then addClientConnection
  
negative.code:     
      member x.RegisterIncommingConnection(xmppClient : IXmppClient) = 
          if stopToken.Token.IsCancellationRequested then failwith "Server already shut down!"
          pendingConnections.AddOrUpdate(xmppClient, xmppClient, fun _ _ ->
            failwithf "this instance is already pending? Cannot call RegisterIncommingConnection twice!") |> ignore
  
          xmppClient.Exited.ContinueWith(fun (t:Task<_>) -> x.MyClientExited xmppClient t.Result) |> ignore
          
  