When the client app supplies neither the product nor the version, then the client driver should supply it's default properties. Obviously there are a bunch of cross-over cases where the client supplies one but not the other. There are more permutations when you introduce stuff like copyright, os, etc.

My personal feeling is that despite what the spec says, these values are just treated as a hash map by Rabbit, and are merely rendered for informational purposes only. I appreciate that the wording of the spec conveys more importance to these parameters, but at the end of the day, the key word is `SHOULD`.

Because of it makes no material difference with Rabbit, I personally wouldn't worry too much about this, for three reasons:

- Firstly there are a bunch of buggy AMQP clients in the wild that cause far more material problems and Rabbit still tolerates them.
- Secondly, I think that particular stanza of the spec is one of those things that the authors just added to the spec because they thought somebody might need it some day for something and it looks speccy.
- Thirdly, Rabbit is superset of AMQP 0.9.1 and in order to do so, they tunnel all sorts of useful stuff over the officially ordained wire frames - so I see this hash map as an extension to that grand Rabbit tradition.

That said, I'll implement whatever you want, since at the day, I just want to land the patch :-)