Support for List and Map

Let me amend my above comment about special casing the size of 0: I have no doubt that there are valid reasons to do this, but maybe add a comment to indicate indicating what those reasons are.