| As explained, we narrow down the value extractor candidates with the types you declare. And we choose the most compliant value extractor compatible with the type defined. I don't see why you're surprised to have your Set behave as a Set when you're declaring it a Set. As for Object, we don't narrow down anything because we have no info about the object so we consider all the available value extractors; the List one being the most specific, it is chosen. Basically, we follow the semantics that you define in your code. No surprise here. |