private RubyMethodGroupInfo/*!*/ MakeAllMethodsGroup(RubyClass/*!*/ cls) {
var overloads = new MethodBase[_allMethods.Count];
var overloadOwners = new RubyMethodGroupInfo[overloads.Length];
int i = 0;
foreach (var entry in _allMethods.Values) {
overloads[i] = entry.Overload;
overloadOwners[i] = entry.Owner;
i++;
}
var result = new RubyMethodGroupInfo(overloads, cls, overloadOwners, cls.IsSingletonClass);
// update ownership of overloads owned by the new group:
foreach (var entry in _allMethods.Values) {
if (entry.Owner != null) {
entry.Owner.CachedInGroup(result);
} else {
entry.Owner = result;
}
}
return result;
}