public void SetVisibilityNoEventNoLock(RubyContext/*!*/ callerContext, string/*!*/ name, RubyMemberInfo/*!*/ method, RubyMethodVisibility visibility) {
Context.RequiresClassHierarchyLock();
RubyMemberInfo existing;
bool skipHidden = false;
if (TryGetMethod(name, ref skipHidden, out existing)) {
// CLR members: Detaches the member from its underlying type (by creating a copy).
SetMethodNoEventNoLock(callerContext, name, method.Copy((RubyMemberFlags)visibility, this));
} else {
SetMethodNoEventNoLock(callerContext, name, new SuperForwarderInfo((RubyMemberFlags)visibility, method.DeclaringModule, name));
}
}