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