public static IMethodDefinition GetHiddenBaseClassMethod(IMethodDefinition derivedClassMethod) {
if (derivedClassMethod.IsConstructor) return Dummy.MethodDefinition;
if (derivedClassMethod.IsVirtual && !derivedClassMethod.IsNewSlot) return Dummy.MethodDefinition; // an override
var typeDef = derivedClassMethod.ContainingTypeDefinition;
var bases = typeDef.IsInterface ? typeDef.Interfaces : typeDef.BaseClasses;
foreach (ITypeReference baseClassReference in bases) {
IMethodDefinition overriddenMethod = GetHiddenBaseClassMethod(derivedClassMethod, baseClassReference.ResolvedType);
if (!(overriddenMethod is Dummy)) return overriddenMethod;
}
return Dummy.MethodDefinition;
}
private static IMethodDefinition GetHiddenBaseClassMethod(IMethodDefinition derivedClassMethod, ITypeDefinition baseClass) {