Given a singleton class:

  irb(main):001:0> class Foo
  irb(main):002:1>   def self.singleton_class
  irb(main):003:2>     return class << self; self; end
  irb(main):004:2>   end
  irb(main):005:1> end
  => nil
  irb(main):006:0> sc = Foo.singleton_class
  => #<Class:Foo>

How can I get class that the singleton class is a singleton class of?

(and is there a name for this?)

  class << sc
    def un_singleton_class
      # ?
    end
  end

  sc.un_singleton_class #=> Foo

I know only of the brute-force solution:

  irb(main):011:0> sc = Foo.singleton_class
  => #<Class:Foo>
  irb(main):012:0> class Class; def singleton_class; class << self; self; end; end; end
  => nil
  irb(main):013:0> ObjectSpace.each_object(Class) { |c| break c if c.singleton_class == sc }
  => Foo

But I was hoping I had overlooked something.

Paul