class RubyLsp::Listeners::CodeLens

def initialize(response_builder, uri, dispatcher)

def initialize(response_builder, uri, dispatcher)
  @response_builder = response_builder
  @uri = T.let(uri, URI::Generic)
  @path = T.let(uri.to_standardized_path, T.nilable(String))
  # visibility_stack is a stack of [current_visibility, previous_visibility]
  @visibility_stack = T.let([[:public, :public]], T::Array[T::Array[T.nilable(Symbol)]])
  @group_stack = T.let([], T::Array[String])
  @group_id = T.let(1, Integer)
  @group_id_stack = T.let([], T::Array[Integer])
  dispatcher.register(
    self,
    :on_class_node_enter,
    :on_class_node_leave,
    :on_def_node_enter,
    :on_call_node_enter,
    :on_call_node_leave,
  )
end