class Aws::Api::ShapeMap

def apply_shape_refs(shape, traits)

def apply_shape_refs(shape, traits)
  case shape
  when StructureShape
    required = Set.new(traits.delete('required') || [])
    (traits.delete('members') || {}).each do |member_name, ref|
      name = underscore(member_name)
      shape.add_member(name, shape_ref(ref,
        member_name: member_name,
        required: required.include?(member_name),
        target: "#{shape.name}$#{member_name}",
      ))
    end
  when ListShape
    shape.member = shape_ref(
      traits.delete('member'),
      target: "#{shape.name}$member")
  when MapShape
    shape.key = shape_ref(
      traits.delete('key'),
      target: "#{shape.name}$key")
    shape.value = shape_ref(
      traits.delete('value'),
      target: "#{shape.name}$value")
  end
end