public bool Run() { InferenceStart(); if (GenericMethod.AcceptVarArgs) { if (Arguments.Length < GenericMethod.GetParameters().Length) { return(InferenceComplete(false)); } } else if (Arguments.Length != GenericMethod.GetParameters().Length) { return(InferenceComplete(false)); } InferExplicits(); while (HasUnfixedTypes()) { bool wasFixed = FixAll(HasNoDependencies) || FixAll(HasDependantsAndBounds); if (!wasFixed) { return(InferenceComplete(false)); } InferCallables(); } ; return(InferenceComplete(true)); }