anchor.diff:      open System.Net.Sockets
       open System.Text
   
  +    /// Container for a received packet and a timestamp.
       type internal MsgReceived = { UdpResult : UdpReceiveResult; Timestamp : DateTimeOffset }
   
  -    type CacheControl = Dummy
  +    type CacheControl = Empty // TODO ############################
  +
  +    //-------------------------------------------------------------------------
  +    // SSDP Messages
   
       /// Traits of a received SSDP message.
       type SsdpMessageTraits = {
  
positive.code:     type SsdpNotifyMessage = {
          Host            : IPEndPoint
          CacheControl    : CacheControl
          Location        : IPEndPoint
          NT              : string
          NTS             : string
          Server          : string
          USN             : string
  
negative.code:             |> Map.ofList
  
          /// Parses an SSDP M-SEARCH message.
          let private parseMSearch (content : string) =
  
              let headerValues = getHeaderValueMap content
              let initialState =
                  {
                      SsdpMSearchMessage.Host = IPEndPoint(0L, 0)
                      MAN = ""; MX = ""; ST = ""; UserAgent = ""
                  }
              MSearch (headerValues |> Map.fold (applyValueToMsg mSearchFieldSetters) initialState)
  
          /// Parses message types we're not handling.
          let private parseUnknown (content : string) : SsdpMessage = Unhandled content
  
          let private verbParserMap =
              [
  