UVNP57VT7S7OSGWK5XXKEBAVZMHDGGPMFGSSCT25GGSK5QFYNMFQC
%__MODULE__{parsers: [{tag, parser} | rest], acc: acc} = state ->
chunk = acc <> chunk
case state do
%__MODULE__{parsers: []} ->
{[{:error, {:no_parsers, chunk}}], :stop}
%__MODULE__{parsers: [{tag, parser} | rest]} ->
case parser.(chunk) do
:need_more ->
{[], %{state | acc: chunk}}
{:matched, data, <<>>} ->
{[{tag, data}], %{state | acc: <<>>, parsers: rest}}