anchor.diff:                   proplists:get_value(args, Packet)),
       ok.
   
  +prefix_without_command_test() ->
  +    ?assertThrow(malformed_packet, parse(":loneprefix")),
  +    ok.
  +
   -endif.
  
positive.code: parse(<<":", Packet/binary>>) ->
      % Packet with prefix, extract it
      [Prefix | Tail] = re:split(Packet, " +", [{parts, 2}]),
      parse_command(Tail, Prefix);
  parse(Packet) ->
      % Packet without prefix, fall to parse_command
      parse_command(Packet, <<>>).
  
  parse_command(Packet, Prefix) ->
      [Command | Args] = re:split(Packet, " +", [{parts, 2}]),
      case Args of
  
negative.code:             parse_args(hd(Args), #state{prefix=Prefix, command=Command})
      end.
  
  %% -------------------------------------------------------------------
  %% IRC parser - third stage: parse arguments (yikes!)
  %% -------------------------------------------------------------------
  -spec parse_args(Packet::binary(), State::#state{}) -> [proplists:property()].
  parse_args(<<>>, #state{accumulator = Acc} = State) when size(Acc) =:= 0 ->
      % End of arguments, build the final proplist for this packet
      [
  