# File lib/mindi.rb, line 132 def threaded(name, &impl) # :yields: thr impl_name = Container.impl_method_name(name) define_method(impl_name, &impl) arity = impl.arity ivname = Container.iv(name) define_method(name) do key = Thread.current map = instance_variable_get(ivname) map ||= instance_variable_set(ivname, {}) map[key] ||= (arity == 1 ? send(impl_name, key) : send(impl_name)) end end