def self.apply(option, members)
options = {}
options = option.member_options.inject({}) do |memo, member_option|
memo[member_option.name] = member_option
memo
end if option.respond_to?(:member_options)
super(option)
members.each do |(name, descriptors)|
member_option = options[name] || DefaultOption.new(name)
member_option = member_option.extend_with_config(*descriptors)
options[name] = member_option
end
MetaUtils.extend_method(option, :member_options) { options.values }
by_ruby_name = options.values.inject({}) do |memo, member_option|
memo[member_option.ruby_name] = member_option
memo
end
MetaUtils.extend_method(option, :member_option) { |n| by_ruby_name[n] }
end