module Fluent::Compat::PropagateDefault::ClassMethods

def config_param(name, type = nil, **kwargs, &block)

def config_param(name, type = nil, **kwargs, &block)
  CONFIGURABLE_CLASS_METHODS.instance_method(:config_param).bind(self).call(name, type, **kwargs, &block)
  pparams = propagate_default_params
  if kwargs.has_key?(:default) && pparams[name.to_s]
    newer = pparams[name.to_s].to_sym
    overridden_default_value = kwargs[:default]
    CONFIGURABLE_CLASS_METHODS.instance_method(:config_section).bind(self).call(:buffer) do
      config_set_default newer, overridden_default_value
    end
  end
end

def config_set_default(name, defval)

def config_set_default(name, defval)
  CONFIGURABLE_CLASS_METHODS.instance_method(:config_set_default).bind(self).call(name, defval)
  pparams = propagate_default_params
  if pparams[name.to_s]
    newer = pparams[name.to_s].to_sym
    CONFIGURABLE_CLASS_METHODS.instance_method(:config_section).bind(self).call(:buffer) do
      self.config_set_default newer, defval
    end
  end
end