def force_case(obj)
    return obj.collect {|o| force_case(o)} if obj.is_a? Array
    return obj unless obj.is_a? Hash
    new_obj = {}
    obj.each {|(k, v)| new_obj[force_attr(k)] = force_case(v) }
    new_obj
  end
def force_case(obj)
    return obj.collect {|o| force_case(o)} if obj.is_a? Array
    return obj unless obj.is_a? Hash
    new_obj = {}
    obj.each {|(k, v)| new_obj[force_attr(k)] = force_case(v) }
    new_obj
  end
This is very inefficient and should be unnecessary. SCIM (1.1 and early
 2.0 drafts) specify that attribute names are case insensitive. However
 in the UAA attribute names are currently case sensitive. This hack takes
 a hash with keys as symbols or strings and with any case, and forces
 the attribute name to the case that the uaa expects.