class Aws::Json::Parser

def structure(ref, values, target = nil)

def structure(ref, values, target = nil)
  shape = ref.shape
  target = ref.shape.struct_class.new if target.nil?
  values.each do |key, value|
    member_name, member_ref = shape.member_by_location_name(key)
    if member_ref
      target[member_name] = parse_ref(member_ref, value)
    elsif shape.union && key != '__type'
      target[:unknown] = { 'name' => key, 'value' => value }
    end
  end
  if shape.union
    # convert to subclass
    member_subclass = shape.member_subclass(target.member).new
    member_subclass[target.member] = target.value
    target = member_subclass
  end
  target
end