code: def credentials=(new_credentials)
        # Find new and changed properties.
        diff = new_credentials.inject([]) do |result, (key, value)|
          result << [key, value] if value != @credentials[key]
          result
        end
  
        # Find removed properties.
        diff = @credentials.inject(diff) do |result, (key, _)|
          result << [key, nil] unless new_credentials.include?(key)
          result
        end
  
        # Set each property.
        diff.each { |entry| set_credential(entry[0], entry[1]) }
  
        return nil
      end
docs: Set the credentials hash to a new one. Calculate difference, and call the
   AuthHandler callback appropriately.