module AWS::Core::OptionGrammar::Descriptors::Structure

def self.apply(option, members)

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[member_option.name] = member_option
    memo
  end
  MetaUtils.extend_method(option, :member_option) { |n| by_ruby_name[n] }
end