class SuperBase
  def self.foo
    self
  end
end
class Base < SuperBase
  def self.foo
    super
  end
end
class A < Base
  foo
end
class B < Base
  foo
end
__END__
# Classes
class SuperBase
  def self.foo: -> (singleton(A) | singleton(B))
end
class Base < SuperBase
  def self.foo: -> (singleton(A) | singleton(B))
end
class A < Base
end
class B < Base
end