/// <summary>Commit a photo struct in the contact's collection of photos.</summary>
 /// <param name="contact">The contact that is having this photo committed.</param>
 /// <param name="arrayNode">The array node where this photo is being committed.</param>
 /// <param name="value">The photo being committed.</param>
 private static void _CommitPhoto(Contact contact, string arrayNode, Photo value)
 {
     Assert.IsTrue(arrayNode.StartsWith(PropertyNames.PhotoCollection + PropertyNames.PhotoArrayNode, StringComparison.Ordinal));
     contact._SetOrRemoveBinaryProperty(arrayNode + PropertyNames.Value, value.Value, value.ValueType);
     string url = null;
     if (null != value.Url)
     {
         url = value.Url.ToString();
     }
     contact._SetOrRemoveStringProperty(arrayNode + PropertyNames.Url, url);
 }
 /// <summary>Commit a certificate in the contact's collection of certificates.</summary>
 /// <param name="contact">The contact that is having this certificate committed.</param>
 /// <param name="arrayNode">The array node where this certificate is being committed.</param>
 /// <param name="value">The certificate being committed.</param>
 private static void _CommitCertificate(Contact contact, string arrayNode, Certificate value)
 {
     Assert.IsTrue(arrayNode.StartsWith(PropertyNames.CertificateCollection + PropertyNames.CertificateArrayNode, StringComparison.Ordinal));
     contact._SetOrRemoveBinaryProperty(arrayNode + PropertyNames.Value, value.Value, value.ValueType);
     contact._SetOrRemoveBinaryProperty(arrayNode + PropertyNames.Thumbprint, value.Thumbprint, value.ThumbprintType);
 }