Return concrete class rather than interface in annotate-tag for collections.
This removes a bunch of reflective calls.
try-best-match prefers highest common denominator between matches