anchor.diff:  let private handle_received_message (log: ILogger) pass_data_maybe (agent: Agent) (env: ReceivedHandlerEnv) dcpp_msg =
       // log.Trace "Received message %A" dcpp_msg
       match dcpp_msg with
  -    | Lock msg ->
  +    | DcppReceiveMessage.Lock msg ->
           agent.post << Send <| SendNick (env.nick, KeyData.create msg.lock)
           env
       | ValidateDenied ->
  
positive.code:     let getBytes (IpAddress ip) = getBytes ip |> Result.get
  
  module PositiveInt =
      type T = PositiveInt of uint64
  
      type Error =
  
negative.code: 
      let apply f (PortData p) = f p
      let unwrap (PortData p) = p
  
  module Direction = 
      type T =
      | Upload
      | Download
  
      let create str = 
          match str with
          | "Upload" -> Success Upload
          | "Download" -> Success Download
          | _ -> StringError.CouldntConvert (exn "doesn't match") |> Failure
  
  // infrastructure types & interfaces
  type ConnectionInfo =
  