internal static Candidate GetPreferredCandidate(MethodCandidate one, MethodCandidate two, CallTypes callType, MetaObject[] actualTypes)
        {
            Candidate cmpParams = ParameterWrapper.GetPreferredParameters(one.Parameters, two.Parameters, actualTypes);

            if (cmpParams.Chosen())
            {
                return(cmpParams);
            }

            Candidate ret = MethodTarget.CompareEquivalentParameters(one.Target, two.Target);

            if (ret.Chosen())
            {
                return(ret);
            }

            if (CompilerHelpers.IsStatic(one.Target.Method) && !CompilerHelpers.IsStatic(two.Target.Method))
            {
                return(callType == CallTypes.ImplicitInstance ? Candidate.Two : Candidate.One);
            }
            else if (!CompilerHelpers.IsStatic(one.Target.Method) && CompilerHelpers.IsStatic(two.Target.Method))
            {
                return(callType == CallTypes.ImplicitInstance ? Candidate.One : Candidate.Two);
            }

            return(Candidate.Equivalent);
        }