private void IncludeTraitNoLock(ref Action<RubyModule> initializer, MemberTableState tableState, Action<RubyModule>/*!*/ trait) {
Assert.NotNull(trait);
if (tableState == MemberTableState.Uninitialized) {
if (initializer != null && initializer != EmptyInitializer) {
initializer += trait;
} else {
initializer = trait;
}
} else {
// TODO: postpone? hold lock?
using (Context.ClassHierarchyUnlocker()) {
trait(this);
}
}
}