Map<List<String>,byte[]> result = new HashMap<>();
        for (KeyValue kv : kvs) {
            byte[] tupleBytes = new byte[kv.getKey().length - confKey.length];
            System.arraycopy(kv.getKey(), confKey.length, tupleBytes, 0, tupleBytes.length);
            // TODO: It's a shame that there isn't a fromBytes with index offets.
            Tuple2 tuple = Tuple2.fromBytes(tupleBytes);
            List<String> list = new ArrayList<>(tuple.size());
            for (int i = 0; i < tuple.size(); i++) {
                if (BINARY_STRINGS) {
                    try {
                        list.add(new String(tuple.getBytes(i), "UTF-8"));
                    }
                    catch (UnsupportedEncodingException ex) {
                        throw new AkibanInternalException("Error decoding binary string", ex);
                    }
                }
                else {
                    list.add(tuple.getString(i));
                }
            }
            result.put(list, kv.getValue());
        }
        // Initiate a watch (from this same transaction) for changes to the key