def to_msgpack(pk = nil)
      case pk
      when MessagePack::Packer
        pk.write_array_header(6)
        pk.write @client_id
        pk.write @local_tick
        pk.write @global_tick
        pk.write @delta
        pk.write @tags
        pk.write @blob
        return pk

      else # nil or IO
        MessagePack.pack(self, pk)
      end
    end
def to_msgpack(pk = nil)
      case pk
      when MessagePack::Packer
        pk.write_array_header(6)
        pk.write @client_id
        pk.write @local_tick
        pk.write @global_tick
        pk.write @delta
        pk.write @tags
        pk.write @blob
        return pk

      else # nil or IO
        MessagePack.pack(self, pk)
      end
    end
Call with Packer, nil, or IO. If +pk+ is nil, returns string. If +pk+ is
 a Packer, returns the Packer, which will need to be flushed. If +pk+ is
 IO, returns nil.