module Ivar

def self.get_analysis(klass)

Thread-safe: Multiple readers are allowed, but writers block all other access
Creates a new analysis if one doesn't exist in the cache
Returns a cached analysis for the given class or module
def self.get_analysis(klass)
  return @analysis_cache[klass] if @analysis_cache.key?(klass)
  MUTEX.synchronize do
    @analysis_cache[klass] ||= TargetedPrismAnalysis.new(klass)
  end
end