# File lib/mindi.rb, line 81 def multiton(name, &impl) # :yields: arg impl_name = Container.impl_method_name(name) define_method(impl_name, &impl) ivname = Container.iv(name) define_method(name) do |key| map = instance_variable_get(ivname) map ||= instance_variable_set(ivname, {}) map[key] ||= send(impl_name, key) end end