def nunes_wrap_method(method_name, action, &block)
      method_without_instrumentation = :"#{method_name}_without_#{action}"
      method_with_instrumentation = :"#{method_name}_with_#{action}"

      if method_defined?(method_without_instrumentation)
        raise ArgumentError, "already instrumented #{method_name} for #{self.name}"
      end

      if !method_defined?(method_name) && !private_method_defined?(method_name)
        raise ArgumentError, "could not find method #{method_name} for #{self.name}"
      end

      alias_method method_without_instrumentation, method_name
      yield method_without_instrumentation, method_with_instrumentation
      alias_method method_name, method_with_instrumentation
    end
def nunes_wrap_method(method_name, action, &block)
      method_without_instrumentation = :"#{method_name}_without_#{action}"
      method_with_instrumentation = :"#{method_name}_with_#{action}"

      if method_defined?(method_without_instrumentation)
        raise ArgumentError, "already instrumented #{method_name} for #{self.name}"
      end

      if !method_defined?(method_name) && !private_method_defined?(method_name)
        raise ArgumentError, "could not find method #{method_name} for #{self.name}"
      end

      alias_method method_without_instrumentation, method_name
      yield method_without_instrumentation, method_with_instrumentation
      alias_method method_name, method_with_instrumentation
    end
Private: And so horrendously ugly...