Given the following code, I would expect the assertions to pass. They currently don't. However, if the a and b properties are typed to String, for example, everything goes as expected.
It might be challenging to get this to work properly for more complex types, but it would make the annotations really transparent. The way it currently behaves is very unsettling (a is set with a Map containing both a and b with their respective values, while b is not set to anything)