The output conversion tree is used to chain up converters in optimal routes from all possible input types towards a given output type. The problem is that Input Converters mess this up a little, because they use Object as input type. As a result, I see cases where it lazy-converts and Object to a String and then feeds that into the input converter.
Input converters shouldn't at all be stored in the conversion tree. They should instead be queried for every new input type to populate new converters (getConverter()).