while (bis.readBit()) {
if (foundTags == null)
foundTags = new ArrayList<ReadTag>();
int index = 0xFF & tagKeyCodec.read(bis);
ReadTag tag = tags[index];
String tagKeyAndType = tag.getKeyAndType();
BitCodec<byte[]> codec = tagCodecs.get(index);
byte[] valueBytes = codec.read(bis);
char type = tagKeyAndType.charAt(3);
Object value = ReadTag.restoreValueFromByteArray(type,
valueBytes);
ReadTag foundTag = new ReadTag(tagKeyAndType.substring(0, 2),
type, value);
foundTags.add(foundTag);
}
return foundTags;
}