public Value[][] Get(GetValue[] valuesToGet)
 {
     var groupedByUri = from x in valuesToGet
                        group x by GetUrl(x.Key);
     var valuesFromEndpoints = new Value[valuesToGet.Length][];
     foreach (var values in groupedByUri)
     {
         var array = values.ToArray();
         var valuesFromCurrentBatch = values.Key.Get(array);
         for (int i = 0; i < array.Length; i++)
         {
             valuesFromEndpoints[Array.IndexOf(valuesToGet, array[i])] = valuesFromCurrentBatch[i];
         }
     }
     return valuesFromEndpoints;
 }
        public Value Get(string key, int specifiedVersion)
        {
            var cachedValue = cache[GetKey(key, specifiedVersion)];
            if (cachedValue != null &&
                cachedValue != DBNull.Value)
                return (Value)cachedValue;

            Value val = null;
            ApplyToKeyAndActiveVersions(data, new[] { specifiedVersion }, key, version =>
            {
                val = new Value
                {
                    Key = key,
                    Data = Api.RetrieveColumn(session, data, dataColumns["data"]),
                    Version = specifiedVersion
                };
            });
            cache[GetKey(key, specifiedVersion)] = (object)val ?? DBNull.Value;
            return val;
        }