typeOf should always just return a union type if there are more types.
(just like getDeclaredTypes() call just above will do)

if 2 methods are found then try to map on the best one and return that
value (so that no union type is created for that if we know which method
wil be called)