candidates
For some more complex resolutions, such as call resolutions, we need to do a two-step process:
First, identify possible candidates with a matching name / symbol
Second, restrict this set to list to the actual best viable solution
In case of call resolution, this is additionally split into two nodes: a CallExpression, which holds the arguments and a Reference (or MemberExpression), which is used as the CallExpression.callee and holds the name of the desired function.
Until we have proper support for AST parents, we need to rely on the resolutionHelper to find out if this reference is used as a CallExpression.callee.