class Tapioca::Dsl::Compilers::ActiveSupportCurrentAttributes

def decorate

def decorate
  dynamic_methods = dynamic_methods_of_constant
  instance_methods = instance_methods_of_constant - dynamic_methods
  return if dynamic_methods.empty? && instance_methods.empty?
  root.create_path(constant) do |current_attributes|
    current_attributes_methods_name = "GeneratedAttributeMethods"
    current_attributes.create_module(current_attributes_methods_name) do |generated_attribute_methods|
      dynamic_methods.each do |method|
        method = method.to_s
        # We want to generate each method both on the class
        generate_method(current_attributes, method, class_method: true)
        # and on the instance
        generate_method(generated_attribute_methods, method, class_method: false)
      end
      instance_methods.each do |method|
        # instance methods are only elevated to class methods
        # no need to add separate instance methods for them
        method = constant.instance_method(method)
        create_method_from_def(current_attributes, method, class_method: true)
      end
    end
    current_attributes.create_include(current_attributes_methods_name)
  end
end