class EacRubyUtils::CommonConstructor::ClassInitialize

def define_initialize_callbacks

def define_initialize_callbacks
  klass.include(::ActiveSupport::Callbacks)
  klass.define_callbacks :initialize
end

def define_initialize_method

def define_initialize_method
  class_initialize = self
  klass.send(:define_method, :initialize) do |*args, &block|
    ::EacRubyUtils::CommonConstructor::InstanceInitialize.new(
      class_initialize.common_constructor, args, self, block
    ).perform
    super(*::EacRubyUtils::CommonConstructor::SuperArgs.new(
      class_initialize, args, self
    ).result)
  end
end

def initialize(common_constructor, klass)

def initialize(common_constructor, klass)
  @common_constructor = common_constructor
  @klass = klass
end

def perform

def perform
  define_initialize_callbacks
  define_initialize_method
end