public OpenIddictServerBuilder RegisterProvider([NotNull] OpenIdConnectServerProvider provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }

            return Configure(options => options.ApplicationProvider = provider);
        }
        public void Import([NotNull] OpenIdConnectServerProvider provider)
        {
            OnMatchEndpoint = provider.MatchEndpoint;

            OnExtractAuthorizationRequest  = provider.ExtractAuthorizationRequest;
            OnExtractConfigurationRequest  = provider.ExtractConfigurationRequest;
            OnExtractCryptographyRequest   = provider.ExtractCryptographyRequest;
            OnExtractIntrospectionRequest  = provider.ExtractIntrospectionRequest;
            OnExtractLogoutRequest         = provider.ExtractLogoutRequest;
            OnExtractRevocationRequest     = provider.ExtractRevocationRequest;
            OnExtractTokenRequest          = provider.ExtractTokenRequest;
            OnExtractUserinfoRequest       = provider.ExtractUserinfoRequest;
            OnValidateAuthorizationRequest = provider.ValidateAuthorizationRequest;
            OnValidateConfigurationRequest = provider.ValidateConfigurationRequest;
            OnValidateCryptographyRequest  = provider.ValidateCryptographyRequest;
            OnValidateIntrospectionRequest = provider.ValidateIntrospectionRequest;
            OnValidateLogoutRequest        = provider.ValidateLogoutRequest;
            OnValidateRevocationRequest    = provider.ValidateRevocationRequest;
            OnValidateTokenRequest         = provider.ValidateTokenRequest;
            OnValidateUserinfoRequest      = provider.ValidateUserinfoRequest;

            OnHandleAuthorizationRequest = provider.HandleAuthorizationRequest;
            OnHandleConfigurationRequest = provider.HandleConfigurationRequest;
            OnHandleCryptographyRequest  = provider.HandleCryptographyRequest;
            OnHandleIntrospectionRequest = provider.HandleIntrospectionRequest;
            OnHandleLogoutRequest        = provider.HandleLogoutRequest;
            OnHandleRevocationRequest    = provider.HandleRevocationRequest;
            OnHandleTokenRequest         = provider.HandleTokenRequest;
            OnHandleUserinfoRequest      = provider.HandleUserinfoRequest;

            OnApplyAuthorizationResponse = provider.ApplyAuthorizationResponse;
            OnApplyConfigurationResponse = provider.ApplyConfigurationResponse;
            OnApplyCryptographyResponse  = provider.ApplyCryptographyResponse;
            OnApplyIntrospectionResponse = provider.ApplyIntrospectionResponse;
            OnApplyLogoutResponse        = provider.ApplyLogoutResponse;
            OnApplyRevocationResponse    = provider.ApplyRevocationResponse;
            OnApplyTokenResponse         = provider.ApplyTokenResponse;
            OnApplyUserinfoResponse      = provider.ApplyUserinfoResponse;

            OnProcessChallengeResponse = provider.ProcessChallengeResponse;
            OnProcessSigninResponse    = provider.ProcessSigninResponse;
            OnProcessSignoutResponse   = provider.ProcessSignoutResponse;

            OnDeserializeAccessToken       = provider.DeserializeAccessToken;
            OnDeserializeAuthorizationCode = provider.DeserializeAuthorizationCode;
            OnDeserializeIdentityToken     = provider.DeserializeIdentityToken;
            OnDeserializeRefreshToken      = provider.DeserializeRefreshToken;

            OnSerializeAccessToken       = provider.SerializeAccessToken;
            OnSerializeAuthorizationCode = provider.SerializeAuthorizationCode;
            OnSerializeIdentityToken     = provider.SerializeIdentityToken;
            OnSerializeRefreshToken      = provider.SerializeRefreshToken;
        }