anchor.diff:          else
               failwith "This shouldn't happen."
   
  -    let read subscriptions state =
  -        state.receiveStream.Position <- 0L
  -
  -        while not state.receiveStream.Reader.IsEndOfStream do
  -            read' subscriptions state
  +    member __.Read subscriptions =
  +        bs.Position <- 0L
  +
  +        while not bs.Reader.IsEndOfStream do
  +            read subscriptions
  +
  +    member __.Write (bytes, offset, count) =
  +        bs.Write (bytes, offset, count)
  +
  +    member this.Reset () =
  +        bs.SetLength 0L
  +
  +    static member Create () =
  +        ReceiveStreamState (new ByteStream (Array.zeroCreate <| 1024 * 1024))
   
   [<AutoOpen>]
   module StateHelpers =
  
positive.code:     member this.ServerSend<'T> (msg : 'T, packetType, endPoint) =
          match udp with
          | Udp.Server state ->
              state.sendStreamState
              |> SendStreamState.write msg (fun bytes startIndex size ->
                  this.ServerSend (bytes, startIndex, size, packetType, endPoint)
              )
          | _ -> ()
  
negative.code: open System.Collections.Generic
  open System.IO.Compression
  
  [<Sealed>]
  type SendStreamState private (bs : ByteStream) =
  
      member __.Write (msg : 'T, f) =
          match Network.lookup.TryGetValue typeof<'T> with
          | true, id ->
              let startIndex = int bs.Position
  
              let pickler = Network.FindTypeById id
              bs.Writer.WriteByte (byte id)
              pickler.serialize (msg :> obj) bs.Writer
  
              let size = int bs.Position - startIndex
  
              f bs.Raw startIndex (int size)
  
          | _ -> ()
  
      member __.Reset () =
          bs.SetLength 0L
  
      static member Create () =
          SendStreamState (new ByteStream (Array.zeroCreate <| 1024 * 1024))
  
  [<Sealed>]
  type ReceiveStreamState private (bs : ByteStream) =
  
      let read (subscriptions : Event<obj> []) =
          let reader = bs.Reader
          let typeId = reader.ReadByte () |> int
  
          if subscriptions.Length > typeId && typeId >= 0 then
  