public int[] Put(AddValue[] valuesToAdd)
 {
     var groupedByUri = from x in valuesToAdd
             group x by GetUrl(x.Key);
     var versions = new int[valuesToAdd.Length];
     foreach (var values in groupedByUri)
     {
         var array = values.ToArray();
         var versionForCurrentBatch = values.Key.Put(array);
         for (int i = 0; i < array.Length; i++)
         {
             versions[Array.IndexOf(valuesToAdd, array[i])] = versionForCurrentBatch[i];
         }
     }
     return versions;
 }
 public int[] Put(AddValue[] valuesToAdd)
 {
     var versions = new List<int>();
     hashTable.Batch(actions =>
     {
         foreach (var value in valuesToAdd)
         {
             var version = actions.Put(
                 value.Key,
                 value.ParentVersions ?? new int[0],
                 value.Bytes);
             versions.Add(version);
         }
         actions.Commit();
     });
     return versions.ToArray();
 }