@Override public boolean visitLabelTokenCommand(Command.LabelTokenCommand command) throws IOException { // id+in_use(byte)+type_blockId(int)+nr_type_records(int) int id = channel.getInt(); byte inUseFlag = channel.get(); boolean inUse = false; if ((inUseFlag & Record.IN_USE.byteValue()) == Record.IN_USE.byteValue()) { inUse = true; } else if (inUseFlag != Record.NOT_IN_USE.byteValue()) { throw new IOException("Illegal in use flag: " + inUseFlag); } LabelTokenRecord record = new LabelTokenRecord(id); record.setInUse(inUse); record.setNameId(channel.getInt()); int nrTypeRecords = channel.getInt(); for (int i = 0; i < nrTypeRecords; i++) { DynamicRecord dr = readDynamicRecord(); if (dr == null) { return true; } record.addNameRecord(dr); } command.init(record); return false; }