negotiate_association (OpenID::Consumer::AssociationManager)

    # File lib/openid/consumer/associationmanager.rb, line 127
          def negotiate_association
            assoc_type, session_type = @negotiator.get_allowed_type
            begin
              return request_association(assoc_type, session_type)
            rescue ServerError => why
              supported_types = extract_supported_association_type(why, assoc_type)
              if !supported_types.nil?
                # Attempt to create an association from the assoc_type and
                # session_type that the server told us it supported.
                assoc_type, session_type = supported_types
                begin
                  return request_association(assoc_type, session_type)
                rescue ServerError => why
                  Util.log("Server #{@server_url} refused its suggested " \
                           "association type: session_type=#{session_type}, " \
                           "assoc_type=#{assoc_type}")
                  return nil
                end
              end
            end
          end