class Sorbet::Private::GemGeneratorTracepoint::TracepointSerializer

def class_name(klass)

def class_name(klass)
  klass = @delegate_classes[Sorbet::Private::RealStdlib.real_object_id(klass)] || klass
  name = Sorbet::Private::RealStdlib.real_name(klass) if Sorbet::Private::RealStdlib.real_is_a?(klass, Module)
  # class/module has no name; it must be anonymous
  if name.nil? || name == ""
    middle = Sorbet::Private::RealStdlib.real_is_a?(klass, Class) ? klass.superclass : klass.class
    id = @anonymous_map[Sorbet::Private::RealStdlib.real_object_id(klass)] ||= anonymous_id
    return "Anonymous_#{class_name(middle).gsub('::', '_')}_#{id}"
  end
  # if the name doesn't only contain word characters and ':', or any part doesn't start with a capital, Sorbet doesn't support it
  if name !~ /^[\w:]+$/ || !name.split('::').all? { |part| part =~ /^[A-Z]/ }
    # warn("Invalid class name: #{name}")
    id = @anonymous_map[Sorbet::Private::RealStdlib.real_object_id(klass)] ||= anonymous_id
    return "InvalidName_#{name.gsub(/[^\w]/, '_').gsub(/0x([0-9a-f]+)/, '0x00')}_#{id}"
  end
  name
end