Support for List and Map

I would have thought it's a little cleaner to do it all in the same method, but if you prefer this then that's fine. As long as this is a deliberate choice and not an artifact of us supporting optional before supporting other types.