class RSpec::Mocks::MethodDouble

def define_proxy_method

Other tags:
    Private: -
def define_proxy_method
  return if @method_is_proxied
  save_original_implementation_callable!
  definition_target.class_exec(self, method_name, @original_visibility || visibility) do |method_double, method_name, visibility|
    define_method(method_name) do |*args, &block|
      method_double.proxy_method_invoked(self, *args, &block)
    end
    # This can't be `if respond_to?(:ruby2_keywords, true)`,
    # see https://github.com/rspec/rspec-mocks/pull/1385#issuecomment-755340298
    ruby2_keywords(method_name) if Module.private_method_defined?(:ruby2_keywords)
    __send__(visibility, method_name)
  end
  @method_is_proxied = true
rescue RuntimeError, TypeError => e
  # TODO: drop in favor of FrozenError in ruby 2.5+
  #  RuntimeError (and FrozenError) for ruby 2.x
  #  TypeError for ruby 1.x
  if (defined?(FrozenError) && e.is_a?(FrozenError)) || FROZEN_ERROR_MSG === e.message
    raise ArgumentError, "Cannot proxy frozen objects, rspec-mocks relies on proxies for method stubbing and expectations."
  end
  raise
end