internal int InvalidateGroupsInSubClasses(string/*!*/ methodName, int maxLevel) {
// don't recurse below maxLevel:
if (_level > maxLevel) {
return -1;
}
RubyMemberInfo method;
if (TryGetDefinedMethod(methodName, out method)) {
var group = method as RubyOverloadGroupInfo;
if (group != null) {
// version of the class has already been increased:
RemoveMethodNoCacheInvalidation(methodName);
return Math.Max(_level, InvalidateGroupsInDependentClasses(methodName, maxLevel));
} else {
// don't recurse here: the new method overrides a non-group
return -1;
}
} else {
return InvalidateGroupsInDependentClasses(methodName, maxLevel);
}
}