1.91-netstandard2.0_vs_2.0alpha1-netstandard2.0.apilist.diff
--- Smdn.Security.Authentication.Sasl-1.91-netstandard2.0.apilist.cs	2019-01-30 03:03:15.634327725 +0900
+++ Smdn.Security.Authentication.Sasl-2.0alpha1-netstandard2.0.apilist.cs	2019-01-30 03:03:18.370283585 +0900
@@ -1,155 +1,160 @@
-// Smdn.Security.Authentication.Sasl-1.91 (netstandard2.0)
+// Smdn.Security.Authentication.Sasl-2.0alpha1 (netstandard2.0)
 //   Name: Smdn.Security.Authentication.Sasl
 //   TargetFramework: .NETStandard,Version=v2.0
-//   AssemblyVersion: 1.91.0.0
-//   InformationalVersion: 1.91 (netstandard2.0)
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0alpha1 (netstandard2.0)
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Runtime.Serialization;
 using Smdn.Security.Authentication.Sasl;
 using Smdn.Security.Authentication.Sasl.Client;
 using Smdn.Text;
 
 namespace Smdn.Security.Authentication.Sasl {
   public enum SaslExchangeStatus : int {
     Continuing = 1,
     Failed = 3,
     None = 0,
     Succeeded = 2,
   }
 
   [Serializable]
   public class SaslException : SystemException {
     protected SaslException(SerializationInfo info, StreamingContext context) {}
     public SaslException() {}
     public SaslException(string message) {}
     public SaslException(string message, Exception innerException) {}
   }
 
   [AttributeUsage(AttributeTargets.Class, Inherited = true)]
   public sealed class SaslMechanismAttribute : Attribute {
     public SaslMechanismAttribute(string name, bool isPlainText) {}
 
     public bool IsPlainText { get; }
     public string Name { get; }
   }
 
   [Serializable]
   public class SaslMechanismNotSupportedException : NotSupportedException {
     protected SaslMechanismNotSupportedException(SerializationInfo info, StreamingContext context) {}
     public SaslMechanismNotSupportedException() {}
     public SaslMechanismNotSupportedException(string mechanismName) {}
     public SaslMechanismNotSupportedException(string mechanismName, Exception innerException) {}
     public SaslMechanismNotSupportedException(string mechanismName, string message) {}
     public SaslMechanismNotSupportedException(string mechanismName, string message, Exception innerException) {}
+
+    public string MechanismName { get; }
+
+    public override void GetObjectData(SerializationInfo info, StreamingContext context) {}
   }
 
   public static class SaslMechanisms {
-    public static readonly IEnumerable<string> AllMechanisms; // = "System.Collections.ObjectModel.ReadOnlyCollection`1[System.String]"
+    public static readonly IReadOnlyList<string> AllMechanisms; // = "System.Collections.ObjectModel.ReadOnlyCollection`1[System.String]"
     public const string Anonymous = "ANONYMOUS";
     public const string CRAMMD5 = "CRAM-MD5";
     public const string DigestMD5 = "DIGEST-MD5";
     public const string External = "EXTERNAL";
     public const string Gssapi = "GSSAPI";
     public const string IsoIec9798_M_DSA_SHA1 = "9798-M-DSA-SHA1";
     public const string IsoIec9798_M_ECDSA_SHA1 = "9798-M-ECDSA-SHA1";
     public const string IsoIec9798_M_RSA_SHA1_ENC = "9798-M-RSA-SHA1-ENC";
     public const string IsoIec9798_U_DSA_SHA1 = "9798-U-DSA-SHA1";
     public const string IsoIec9798_U_ECDSA_SHA1 = "9798-U-ECDSA-SHA1";
     public const string IsoIec9798_U_RSA_SHA1_ENC = "9798-U-RSA-SHA1-ENC";
     public const string KerberosV4 = "KERBEROS_V4";
     public const string KerberosV5 = "KERBEROS_V5";
     public const string Login = "LOGIN";
     public const string NTLM = "NTLM";
     public const string OTP = "OTP";
     public const string Plain = "PLAIN";
     public const string SKey = "SKEY";
     public const string SecureID = "SECURID";
   }
 }
 
 namespace Smdn.Security.Authentication.Sasl.Client {
   public class AnonymousMechanism : SaslClientMechanism {
     public AnonymousMechanism() {}
 
     public override bool ClientFirst { get; }
 
     protected override SaslExchangeStatus Exchange(ByteString serverChallenge, out ByteString clientResponse) {}
   }
 
   public class CRAMMD5Mechanism : SaslClientMechanism {
     public CRAMMD5Mechanism() {}
 
     protected override void Dispose(bool disposing) {}
     protected override SaslExchangeStatus Exchange(ByteString serverChallenge, out ByteString clientResponse) {}
     public override void Initialize() {}
   }
 
   public class DigestMD5Mechanism : SaslClientMechanism {
     public DigestMD5Mechanism() {}
 
     public byte[] Cnonce { get; set; }
 
     protected override void Dispose(bool disposing) {}
     protected override SaslExchangeStatus Exchange(ByteString serverChallenge, out ByteString clientResponse) {}
     public override void Initialize() {}
   }
 
   public class LoginMechanism : SaslClientMechanism {
     public LoginMechanism() {}
 
     public override bool ClientFirst { get; }
 
     protected override SaslExchangeStatus Exchange(ByteString serverChallenge, out ByteString clientResponse) {}
     public override void Initialize() {}
   }
 
   public class PlainMechanism : SaslClientMechanism {
     public PlainMechanism() {}
 
     public override bool ClientFirst { get; }
 
     protected override SaslExchangeStatus Exchange(ByteString serverChallenge, out ByteString clientResponse) {}
   }
 
   public abstract class SaslClientMechanism : IDisposable {
     protected SaslClientMechanism() {}
 
     public virtual bool ClientFirst { get; }
     public NetworkCredential Credential { get; set; }
     public SaslExchangeStatus ExchangeStatus { get; }
     public bool IsPlainText { get; }
     public string Name { get; }
     public string ServiceName { get; set; }
 
     protected void CheckDisposed() {}
     protected void CheckExchangeStatus() {}
     public static SaslClientMechanism Create(string mechanismName) {}
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     protected abstract SaslExchangeStatus Exchange(ByteString serverChallenge, out ByteString clientResponse);
     public SaslExchangeStatus Exchange(byte[] serverChallenge, out byte[] clientResponse) {}
     ~SaslClientMechanism() {}
-    public static string[] GetAvailableMechanisms() {}
+    public static IReadOnlyList<string> GetAvailableMechanisms() {}
+    public static IReadOnlyList<string> GetAvailableMechanisms(IEnumerable<string> usingMechanisms) {}
     public virtual SaslExchangeStatus GetInitialResponse(out byte[] initialClientResponse) {}
     public virtual void Initialize() {}
     public static bool IsMechanismPlainText(string mechanismName) {}
     public static void RegisterMechanism(Type mechanismType) {}
   }
 
   public class XOAuth2Mechanism : SaslClientMechanism {
     public XOAuth2Mechanism() {}
     public XOAuth2Mechanism(string user, string accessToken) {}
 
     public string AccessToken { get; set; }
     public override bool ClientFirst { get; }
     public string LastErrorResults { get; }
     public string User { get; set; }
 
     protected override SaslExchangeStatus Exchange(ByteString serverChallenge, out ByteString clientResponse) {}
     public override void Initialize() {}
   }
 }