private static MethodInfo FindMethod(Type type, string name, ReadOnlyCollection <Expression> args, Type[] typeArgs)
{
using (IEnumerator <MethodInfo> en = type.GetStaticMethods().Where(m => m.Name == name).GetEnumerator())
{
if (!en.MoveNext())
{
throw Error.NoMethodOnType(name, type);
}
do
{
MethodInfo mi = en.Current;
if (ArgsMatch(mi, args, typeArgs))
{
return((typeArgs != null) ? mi.MakeGenericMethod(typeArgs) : mi);
}
} while (en.MoveNext());
}
throw Error.NoMethodOnTypeMatchingArguments(name, type);
}