if (bytes == null || (len == 1 && bytes[off] == 0)) {
// No hash keys.
return ImmutableMap.of();
}
ByteArrayInputStream bis = new ByteArrayInputStream(bytes, off, len);
BinaryDecoder decoder = new BinaryDecoder(bis);
int size = decoder.readInt();
Map<String, Integer> hashKeys = Maps.newHashMapWithExpectedSize(size);
while (size > 0) { // per avro spec, ther ecan be multiple blocks
while (size-- > 0) {
String key = decoder.readString();
int value = decoder.readInt();
hashKeys.put(key, value);
}
size = decoder.readInt(); // next block length, will be always zero in this case
}
return hashKeys;
}