private List <T> ConvertBatchGetItemResponse <T>(DynamoMetadataType table, KeysAndAttributes getItems)
        {
            var to = new List <T>();

            var request = new BatchGetItemRequest(new Dictionary <string, KeysAndAttributes> {
                { table.Name, getItems }
            });

            var response = Exec(() => DynamoDb.BatchGetItem(request));

            List <Dictionary <string, AttributeValue> > results;

            if (response.Responses.TryGetValue(table.Name, out results))
            {
                results.Each(x => to.Add(Converters.FromAttributeValues <T>(table, x)));
            }

            var i = 0;

            while (response.UnprocessedKeys.Count > 0)
            {
                response = Exec(() => DynamoDb.BatchGetItem(new BatchGetItemRequest(response.UnprocessedKeys)));
                if (response.Responses.TryGetValue(table.Name, out results))
                {
                    results.Each(x => to.Add(Converters.FromAttributeValues <T>(table, x)));
                }

                if (response.UnprocessedKeys.Count > 0)
                {
                    i.SleepBackOffMultiplier();
                }
            }

            return(to);
        }