private IEnumerable<OverloadInfo>/*!*/ GetDeclaredClrMethods(Type/*!*/ type, BindingFlags bindingFlags, string prefix, string/*!*/ name, string altName, bool specialNameOnly) {
string memberName = prefix + name;
string altMemberName = prefix + altName;
MemberInfo[] methods = GetDeclaredClrMethods(type, bindingFlags, memberName);
MemberInfo[] altMethods = (altName != null) ? GetDeclaredClrMethods(type, bindingFlags, altMemberName) : Utils.EmptyMemberInfos;
foreach (MethodBase method in methods.Concat(altMethods)) {
if (IsVisible(method.Attributes, method.DeclaringType, specialNameOnly)) {
yield return new ReflectionOverloadInfo(method);
}
}
if ((bindingFlags & BindingFlags.Instance) != 0) {
var extensions = GetClrExtensionMethods(type, memberName);
var altExtensions = GetClrExtensionMethods(type, altMemberName);
foreach (var extension in extensions.Concat(altExtensions)) {
// TODO: inherit ExtensionMethodInfo <: OverloadInfo?
yield return new ReflectionOverloadInfo(extension.Method);
}
}
}