class ActiveSupport::Dependencies::ClassCache

def clear!

def clear!
  @store.clear
end

def empty?

def empty?
  @store.empty?
end

def get(key)

def get(key)
  key = key.name if key.respond_to?(:name)
  @store[key] ||= Inflector.constantize(key)
end

def initialize

def initialize
  @store = Concurrent::Map.new
end

def key?(key)

def key?(key)
  @store.key?(key)
end

def safe_get(key)

def safe_get(key)
  key = key.name if key.respond_to?(:name)
  @store[key] ||= Inflector.safe_constantize(key)
end

def store(klass)

def store(klass)
  return self unless klass.respond_to?(:name)
  raise(ArgumentError, 'anonymous classes cannot be cached') if klass.name.empty?
  @store[klass.name] = klass
  self
end