class RBI::Rewriters::FlattenSingletonMethods

~~~
end
def self.m3; end
def self.m2; end
class << self
def self.m1; end
~~~rb
will be rewritten to:
~~~
end
end
def m3; end
class << self
def self.m2; end
def m1; end
class << self
~~~rb
Example:
Rewrite non-singleton methods inside singleton classes to singleton methods

def visit(node)

: (Node? node) -> void
@override
def visit(node)
  return unless node
  case node
  when SingletonClass
    node.nodes.dup.each do |child|
      visit(child)
      next unless child.is_a?(Method) && !child.is_singleton
      child.detach
      child.is_singleton = true
      parent_tree = node.parent_tree #: as !nil
      parent_tree << child
    end
    node.detach if node.nodes.empty?
  when Tree
    visit_all(node.nodes)
  end
end