The type to dict conversion routine should be looking at the xsi:type attribute of nodes who are an "abstract type" node to see what the type to use for the conversion to a dictionary really should be for incoming messages.

That is the behavior documented.

The dict to type conversion routine does this for outgoing messages.

I *really* seem to remember this code being there at one time.  It should be a couple of lines of code to fix the issue.