module AWS::Core::OptionGrammar::ModuleMethods

def apply_rename_descriptor(m, name, new_name)

def apply_rename_descriptor(m, name, new_name)
  name = ruby_name(name)
  MetaUtils.extend_method(m, :validate) do |opts|
    raise ArgumentError.new("unexpected option foo") if
      opts.key?(name) or opts.key?(name.to_sym)
    opts = opts.dup
    opts[name] = opts[new_name] if opts.key?(new_name)
    opts[name.to_sym] = opts[new_name.to_sym] if opts.key?(new_name.to_sym)
    opts.delete(new_name)
    opts.delete(new_name.to_sym)
    super(opts)
  end
  # couldn't find a better way to alias a class method
  method = m.method("params_for_#{name}")
  MetaUtils.extend_method(m, "params_for_#{new_name}") do |value|
    method.call(value)
  end
end