anchor.diff:        Port : uint16 }
       override x.ToString() = string x.Port
   
  -type IncarnationNumber =
  -    | IncarnationNumber of uint64
  -
  -type SeqNumber =
  -    | SeqNumber of uint64
  -
   type NodeStatus =
       | Alive of IncarnationNumber
       | Suspect of IncarnationNumber
       | Dead of IncarnationNumber
   
  +[<StructuralEquality; StructuralComparison>]
   type SwimEvent =
       | Membership of Node * NodeStatus
       | User of string
  
positive.code:           PeriodTimeout = periodTimeout }
  
      // update : MemberList -> Node -> Status -> MemberList
      let update memberList node = function
          | Alive i -> alive memberList node i
          | Suspect i -> suspect memberList node i
          | Dead i -> dead memberList node i
  
  module FailureDetection =
      // ping : SeqNumber -> Async<bool>
      // pingRequest : SeqNumber -> Node -> Async<bool>
      // ack : Node -> SeqNumber -> unit
  
  module Swim =
      type Config =
  
negative.code:         { memberList with Members = members' }
  
      // stillAlive : MemberList -> IncarnationNumber -> MemberList
      let private stillAlive incarnation memberList =
          let { Local = local
                Incarnation = currentIncarnation } = memberList
          let incarnation' =  if currentIncarnation > incarnation then currentIncarnation
  