class Sorbet::Private::GemGeneratorTracepoint::TracepointSerializer

def detect_used(gem_class_defs)

def detect_used(gem_class_defs)
  # subclassed, included, or extended
  used = {}
  gem_class_defs.each do |gem, klass_ids|
    klass_ids.each do |klass_id, class_def|
      klass = class_def.klass
      # only add an anon module if it's used as a superclass of a non-anon module, or is included/extended by a non-anon module
      used_value = Sorbet::Private::RealStdlib.real_is_a?(klass, Module) && !Sorbet::Private::RealStdlib.real_name(klass).nil? ? true : Sorbet::Private::RealStdlib.real_object_id(klass) # if non-anon, set it to true
      (used[Sorbet::Private::RealStdlib.real_object_id(klass.superclass)] ||= Set.new) << used_value if Sorbet::Private::RealStdlib.real_is_a?(klass, Class)
      # otherwise link to next anon class
      class_def.defs.each do |item|
        (used[item[item[:type]].object_id] ||= Set.new) << used_value if [:extend, :include].include?(item[:type])
      end
    end
  end
  used
end