/// <inheritdoc />
 public override int GetHashCode()
 {
     unchecked {
         int hashCode = FunctionType.GetHashCode();
         hashCode = (hashCode * 397) ^ FunctionName.ToLowerInvariant().GetHashCode();
         hashCode = (hashCode * 397) ^ (FunctionConfiguration != null ? FunctionConfiguration.GetHashCodeExt() : 0);
         hashCode = (hashCode * 397) ^ (KeySizeBits.HasValue ? KeySizeBits.Value.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Nonce != null ? Nonce.GetHashCodeExt() : 0);
         hashCode = (hashCode * 397) ^ (Salt != null ? Salt.GetHashCodeExt() : 0);
         hashCode = (hashCode * 397) ^ (AdditionalData != null ? AdditionalData.GetHashCodeExt() : 0);
         hashCode = (hashCode * 397) ^ (OutputSizeBits.HasValue ? OutputSizeBits.Value.GetHashCode() : 0);
         return(hashCode);
     }
 }