# File lib/nanoc/base/memoization.rb, line 43
    def memoize(method_name)
      # Alias
      original_method_name = '__nonmemoized_' + method_name.to_s
      alias_method original_method_name, method_name

      # Redefine
      define_method(method_name) do |*args|
        # Get cache
        @__memoization_cache ||= {}
        @__memoization_cache[method_name] ||= {}

        # Recalculate if necessary
        if !@__memoization_cache[method_name].has_key?(args)
          result = send(original_method_name, *args)
          @__memoization_cache[method_name][args] = result
        end

        # Done
        @__memoization_cache[method_name][args]
      end
    end