class B
def self.foo
"B.foo"
end
def self.bar
"B.bar"
end
def bar
"B#bar"
end
end
class C < B
def self.bar
"C.bar"
end
def bar
"C#bar"
end
end
p C.foo
p C.bar
p C.singleton_class.instance_method(:foo).bind(C).call #How come this doesn't error??
p B.singleton_class.instance_method(:foo).bind(C).call
# p C.new.foo => NoMethodError
p C.new.bar
p B.instance_method(:bar).bind(C.new).call
Y2xhc3MgQgogIGRlZiBzZWxmLmZvbwogICAgIkIuZm9vIgogIGVuZAoKICBkZWYgc2VsZi5iYXIKICAgICJCLmJhciIKICBlbmQKCiAgZGVmIGJhcgogICAgIkIjYmFyIgogIGVuZAplbmQKCmNsYXNzIEMgPCBCCiAgZGVmIHNlbGYuYmFyCiAgICAiQy5iYXIiCiAgZW5kCgogIGRlZiBiYXIKICAgICJDI2JhciIKICBlbmQKZW5kCgpwIEMuZm9vCnAgQy5iYXIKcCBDLnNpbmdsZXRvbl9jbGFzcy5pbnN0YW5jZV9tZXRob2QoOmZvbykuYmluZChDKS5jYWxsICNIb3cgY29tZSB0aGlzIGRvZXNuJ3QgZXJyb3I/PwpwIEIuc2luZ2xldG9uX2NsYXNzLmluc3RhbmNlX21ldGhvZCg6Zm9vKS5iaW5kKEMpLmNhbGwKIyBwIEMubmV3LmZvbyA9PiBOb01ldGhvZEVycm9yCnAgQy5uZXcuYmFyCnAgQi5pbnN0YW5jZV9tZXRob2QoOmJhcikuYmluZChDLm5ldykuY2FsbA==