I don't see how this addresses #5 any more than what is already supported.  We already support setting a metadata key to be an array of values.  But now you're allowing for each of those values to themselves be arrays (but still using the same key)?  Could you show an example of what kind of input this is trying to handle?