MapRecordConverter
Reads an anonymous ROW(...) as a map, taking its fields as alternating key/value pairs.
Both halves of a pair go through DeserializationContext.convert against the type arguments of the Map asked for, so the key is converted like any value: Map<String, Any?> wants text keys, Map<Int, String> wants int4 ones, and Map<Tribute, Int> wants a registered composite. A key whose column converts to none of that fails where it is met, instead of being stringified into something that looks like it worked. Asked for as Any, or as a Map with nothing said about its arguments, each half is what the chain makes of it with nothing narrower named — a registered composite still arriving as its class, not as the PgComposite its codec produced.
Three shapes are refused rather than guessed at, because the map would quietly hold fewer fields than the record did otherwise: an odd number of fields, a NULL key, and a key already in the map. The last is worth having even where keys look distinct in SQL, since two of them only have to be equal to collide.
Properties
Functions
Decides whether this converter handles the value at hand. Must return false unless convert can produce an instance of expectedType.