   def primitive_encoder(value, %Type{class: :primitive, name: "boolean"}, true) do
     if value == true, do: <<1 :: size(8)>>, else: <<0 :: size(8)>>
   end
-  def primitive_encoder(value, %Type{class: :primitive, name: "char"} = t, in_array) do
+  def primitive_encoder(value, %Type{class: :primitive, name: "char"}, in_array) do
     if in_array, do: <<value :: utf32>>, else: <<0x73, value :: utf32>>
   end
-  def primitive_encoder(value, %Type{class: :primitive, name: "timestamp"} = t, in_array) do
+  def primitive_encoder(value, %Type{class: :primitive, name: "timestamp"}, in_array) do
     # timestamp = 64 bit unsigned integer
     if in_array, do: <<value :: size(64)>>, else: <<0x83, value :: size(64)>>
   end

    decode_bin(binary)
  end
  def typed_decoder(<<con, value_bin :: binary>>, %Type{class: :composite} = t) do
    {size, count, values} = case con do
      0xc0 ->
        <<s, c, vs :: binary>> = value_bin
        {s, c, vs}

    do: <<0xb1, byte_size(bin) :: size(32)>> <> bin


  def parse(<<0x4 :: size(4), type :: size(4), _rest :: binary>>) do
    [decode(<<0x4::size(4), type>>)]
  end

