bestViableResolution

This functions gives the language a chance to refine the results of a SymbolResolver.resolveWithArguments by choosing the best viable function(s) out of the set of viable functions. It can also influence the CallResolutionResult.SuccessKind of the resolution, e.g., if the result is ambiguous.

The default implementation will follow the following heuristic: