anchor.diff:  open System.IO
   open System.Threading
   
  -// Type definitions
  +// =================== TYPE DEFINITIONS ======================
   type U128 = uint64 * uint64
   type NetworkLocation = string // an url... Maybe something better later
   type GUID = U128 // u128... Maybe something better later
   type Address = NetworkLocation
   
  -//type DeliverFunc = string -> GUID -> unit
  -//type ForwardFunc = string -> GUID -> GUID -> string * GUID
  -//type NewLeafFunc = GUID list -> unit
  -
  -// ====================== CONFIG ======================
  -
  -let b = 4 // 2^b-1 per row in the routing table
  -let len_L = 16 // or 32
  -
  -// ====================================================
  -
  -// UPDATE: send_messsage and start_listening.listen
  +// NOTE NOTE NOTE
  +// When you UPDATE this:
  +// Also update 'send_messsage' and 'start_listening.listen'
   type MessageType =
   | Join      // A new node is joining and requesting states
   | Update    // A new node has been added sucessfully: update to include it
   | JoinState // The state data for a new node
   | Route     // Send a message somewhere
  -// Add more persistency commands here
  +    // Add more persistency commands here
   
   // The state record of a Pastry node
   type Node = {
  
positive.code:     (n1, n2)
  
  // Serializes the state of the given node
  let serialize (node: Node) : string =
      JsonConvert.SerializeObject node
  
  let SEPARATOR = " SEPARATOR " // This is silly...
  // Handles a message intended for this node
  let handle_message (node: Node) (typ: MessageType) (msg: string) (key: GUID) =
      printfn "PASTRY: Handling '%A' message '%s'..." typ msg
  
negative.code:             // NOTE NOTE NOTE ------- remove later!
              // Simulate some latency on localhost
              printfn "Sleeping before forwarding join..."
              Thread.Sleep(1000)
              printfn "Done! Continuing..."
  
              sprintf "%s%s%s" msg SEPARATOR (serialize node)
  