anchor.diff:  -record(buf, {bytes = <<>> :: binary(),
                 waiting_for = unknown :: 'unknown' | non_neg_integer()}).
   
  +-opaque parse_buffer() :: #buf{}.
  +-type syslog_message() :: {msg, binary()} | {malformed, binary()}.
  +-type syslog_messages() :: [syslog_message()].
  +
   %% Syslog frames
   %% a) <Length as ascii integer><space><msg:Length>"
   %% b) <msg>\n.
  
positive.code: parse(Bytes) when is_binary(Bytes) ->
      push(Bytes, new()).
  
  push(Bytes, Buf = #buf{bytes=OldBuf, waiting_for=WF})
    when is_binary(Bytes) ->
      push(iolist_to_binary([OldBuf, Bytes]), WF, Buf).
  
negative.code:     parse_recursive(Bytes, []).
  
  
  -spec parse_recursive(binary(), Acc::syslog_messages()) ->
                               {'ok' | {'error', term()},
                                syslog_messages(), parse_buffer()}.
  parse_recursive(<<>>, Acc) ->
      {ok, lists:reverse(Acc), #buf{}};
  parse_recursive(Buf, Acc) ->
  