module T::Types::Simple::NamePatch

def name

def name
  # Sorbet memoizes this method into the `@name` instance variable but
  # doing so means that types get memoized before this patch is applied
  qualified_name_of(@raw_type)
end

def qualified_name_of(constant)

def qualified_name_of(constant)
  name = NAME_METHOD.bind_call(constant)
  name = nil if name&.start_with?("#<")
  return if name.nil?
  if name.start_with?("::")
    name
  else
    "::#{name}"
  end
end