module ActiveModel::AttributeMethods::ClassMethods

def define_call(code_generator, name, target_name, mangled_name, parameters, call_args, namespace:, as:)

def define_call(code_generator, name, target_name, mangled_name, parameters, call_args, namespace:, as:)
  code_generator.define_cached_method(mangled_name, as: as, namespace: namespace) do |batch|
    body = if CALL_COMPILABLE_REGEXP.match?(target_name)
      "self.#{target_name}(#{call_args.join(", ")})"
    else
      call_args.unshift(":'#{target_name}'")
      "send(#{call_args.join(", ")})"
    end
    batch <<
      "def #{mangled_name}(#{parameters || ''})" <<
      body <<
      "end"
  end
end