Code Review: Reflection

tfpt review /shelveset:Reflection;REDMOND\tomat

Removes singleton classes from Module#ancestors return value to match
MRI.
Implements Kernel#extend, Kernel#singleton_methods, Module#extended and
Module#extend_object.

Fixes [#20002] singleton_methods not implemented.
Fixes [#19972] Module::module_function assertion error. The assertion
was incorrect.
Fixes [#20011] Can’t subclass module. Added protected constructors to
allow inheriting in Ruby.

Includes adjusted Wayne K.'s patch.

Tomas

I think you also need to check for ci.IsFamilyAndAssembly in
RubyTypeBuilder.MakeClass (when checking for private) but otherwise it
looks good.

Thanks, forgot about that one.

Tomas