public MethodResolutionResult ResolveSuperMethodNoLock(string/*!*/ name, RubyModule/*!*/ callerModule) {
Context.RequiresClassHierarchyLock();
Assert.NotNull(name, callerModule);
InitializeMethodsNoLock();
RubyMemberInfo info = null;
RubyModule owner = null;
bool foundModule = false;
bool skipHidden = false;
// start searching for the method in the MRO parent of the declaringModule:
if (ForEachAncestor((module) => {
if (module == callerModule) {
foundModule = true;
return false;
}
owner = module;
return foundModule && module.TryGetMethod(name, ref skipHidden, out info) && !info.IsSuperForwarder;
}) && !info.IsUndefined) {
return new MethodResolutionResult(info, owner, true);
}
return MethodResolutionResult.NotFound;
}