# File lib/forwardable/extended.rb, line 138 def def_delegator(accessor, method, alias_ = method, **kwd) kwd, alias_ = alias_, method if alias_.is_a?(Hash) && !kwd.any? if alias_.is_a?(Hash) || !kwd.any? Forwardable.instance_method(:def_delegator).bind(self) \ .call(accessor, method, alias_) elsif !kwd[:type] def_modern_delegator( accessor, method, alias_, **kwd ) else raise ArgumentError, "Alias not supported." if alias_ != method send("def_#{kwd[:type]}_delegator", accessor, method, **kwd.tap do |obj| obj.delete(:type) end) end end