    # File lib/ramaze/snippets/ramaze/lru_hash.rb, line 209
        def fetch(key, default = (p_default = true; nil))
          if key?(key)
            value = self[key]
          elsif p_default.nil?
            value = self[key] = default
          elsif block_given?
            value = self[key] = yield(key)
          else
            raise KeyError, "key not found: %p" % [key]
          end

          value
        end