internal void IncludeModulesNoLock(RubyModule[]/*!*/ modules) {
Context.RequiresClassHierarchyLock();
Mutate();
RubyUtils.RequireMixins(this, modules);
RubyModule[] expanded = ExpandMixinsNoLock(GetSuperClass(), _mixins, modules);
foreach (RubyModule module in expanded) {
if (module.IsInterface && !CanIncludeClrInterface) {
if (Array.IndexOf(_mixins, module) == -1) {
throw new InvalidOperationException(String.Format(
"Interface `{0}' cannot be included in class `{1}' because its underlying type has already been created",
module.Name, Name
));
}
}
}
MixinsUpdated(_mixins, _mixins = expanded);
_context.ConstantAccessVersion++;
}