def def_modern_delegator(accessor, method, alias_ = method, args: \
{ :before => [], :after => [] }, **kwd)
prefix, suffix, wrap = prepare_delegate(**kwd)
args = { :before => args } unless args.is_a?(Hash)
b = [args[:before]].flatten.compact.map(&:to_s).join(", ")
a = [args[ :after]].flatten.compact.map(&:to_s).join(", ")
b = b + ", " unless args[:before].nil? || args[:before].empty?
a = ", " + a unless args[ :after].nil? || args[ :after].empty?
alias_ = alias_.to_s.gsub(/\?$/, "") if suffix
class_eval delegate_debug("def \#{alias_}\#{suffix}(*args, &block)\n\#{wrap}(\#{prefix}\#{accessor}.send(\n\#{method.inspect}, \#{b}*args\#{a}, &block\n))\n\nrescue Exception\nif !Forwardable.debug && $@ && $@.respond_to?(:delete_if)\n$@.delete_if do |source|\nsource =~ %r\"\#{Regexp.escape(__FILE__)}\"o\nend\nend\n\nraise\nend\n"), __FILE__, __LINE__ - 10
end