public bool[] Remove(RemoveValue[] valuesToRemove)
 {
     var groupedByUri = from x in valuesToRemove
                        group x by GetUrl(x.Key);
     var valuesFromEndpoints = new bool[valuesToRemove.Length];
     foreach (var values in groupedByUri)
     {
         var array = values.ToArray();
         var valuesFromCurrentBatch = values.Key.Remove(array);
         for (int i = 0; i < array.Length; i++)
         {
             valuesFromEndpoints[Array.IndexOf(valuesToRemove, array[i])] = valuesFromCurrentBatch[i];
         }
     }
     return valuesFromEndpoints;
 }
 public bool[] Remove(RemoveValue[] valuesToRemove)
 {
     var values = new List<bool>();
     hashTable.Batch(actions =>
     {
         foreach (var value in valuesToRemove)
         {
             var removed = actions.Remove(
                 value.Key,
                 value.ParentVersions ?? new int[0]);
             values.Add(removed);
         }
         actions.Commit();
     });
     return values.ToArray();
 }