/// <summary>
 /// Asynchronously commits any modifications in <see cref="AN_SnapshotMetadataChange"/>
 /// made to the <see cref="AN_Snapshot"/> and loads a <see cref="AN_SnapshotMetadata"/>.
 /// The callback returned by this method is complete once the changes are synced locally
 /// and the background sync request for this data has been requested.
 ///
 /// This method fails a task with an exception
 /// when called with a snapshot that was not opened or has already been committed/discarded.
 ///
 /// Note that the total size of the contents of snapshot
 /// may not exceed the size provided <see cref="GetMaxDataSize"/>
 /// </summary>
 /// <param name="snapshot">The snapshot to commit the data for.</param>
 /// <param name="metadataChange">
 /// The set of changes to apply to the metadata for the snapshot.
 /// Use <see cref="AN_SnapshotMetadataChange.EMPTY_CHANGE"/> to preserve the existing metadata.
 /// </param>
 /// <param name="callback">The operation callback.</param>
 public void CommitAndClose(AN_Snapshot snapshot, AN_SnapshotMetadataChange metadataChange, Action <AN_SnapshotMetadataResult> callback)
 {
     AN_GMS_Lib.Snapshots.CommitAndClose(this, snapshot, metadataChange, callback);
 }
 /// <summary>
 /// Starts a task which asynchronously resolves a conflict using the data from the provided Snapshot.
 ///
 /// This will replace the data on the server with the specified Snapshot.
 /// Note that it is possible for this operation to result in a conflict itself, in which case resolution should be repeated.
 /// </summary>
 /// <param name="conflictId">he ID of the conflict to resolve. Must come from <see cref="AN_SnapshotConflict"/></param>
 /// <param name="snapshot">The snapshot to use to resolve the conflict.</param>
 /// <param name="callback">The task callback.</param>
 public void ResolveConflict(string conflictId, AN_Snapshot snapshot, Action <AN_LinkedObjectResult <AN_DataOrConflictResult> > callback)
 {
     AN_GMS_Lib.Snapshots.ResolveConflict(this, conflictId, snapshot, callback);
 }