anchor.diff:                      callback packet
               )
           )
  -
  -let ReliableAckReceiver (packetPool : PacketPool) ack =
  -
  -    let queue = Queue<Packet> ()
  -
  -    { new IFilter with
  -
  -        member x.Send packet =
  -            queue.Enqueue packet
  -
  -        member x.Process output =
  -            while queue.Count > 0 do
  -                let packet = queue.Dequeue ()
  -                ack packet.SequenceId
  -                output packet
  -    }
  -
  -let ReliableSequencedAckReceiver (packetPool : PacketPool) ack =
  -
  -    let mutable recentFrom = 0us
  -    let mutable recentTo = 0us
  -    let queue = Queue<Packet> ()
  -
  -    { new IFilter with
  -
  -        member x.Send packet =
  -
  -            // A new message has been received.
  -            if sequenceMoreRecent packet.SequenceId recentTo then
  -
  -                while queue.Count > 0 do
  -                    packetPool.Recycle (queue.Dequeue ())
  -
  -                recentFrom <- packet.SequenceId
  -                recentTo <- packet.SequenceId + uint16 packet.Fragments
  -                queue.Enqueue packet
  -
  -            // The packet could be a fragment of the entire message.
  -            elif sequenceMoreRecent packet.SequenceId recentFrom then
  -                if packet.FragmentId > 0us || packet.Fragments > 0uy then
  -                    queue.Enqueue packet
  -                else
  -                    failwith "shouldn't happen yet"
  -                    packetPool.Recycle packet
  -
  -            else
  -                packetPool.Recycle packet
  -            
  -        member x.Process output =
  -            while queue.Count > 0 do
  -                let packet = queue.Dequeue ()
  -                ack packet.SequenceId
  -                output packet
  -    }
   
   [<Struct>]
   type Data = { bytes : byte []; startIndex : int; size : int }
  
positive.code:     NewPipeline.createPipeline receiveFilter
      |> NewPipeline.build
  
  let reliableOrderedReceiver ack f =
      let packetPool = PacketPool 64
      let ackManager = AckManager ()
  
      create (ReceiverSource packetPool)
      |> add (ReliableOrderedAckReceiver packetPool ackManager ack)
      |> sink (fun packet ->
          f packet
          packetPool.Recycle packet
      )
  
negative.code: 
  open Foom.Network
  open Foom.Network.Pipeline
  
  module NewPipeline =
  
  