@Override public void readFields(DataInput in) throws IOException { RowKeySchema schema = new RowKeySchema(); schema.readFields(in); int maxLength = getTerminatorCount(schema); int andLen = in.readInt(); List<List<KeyRange>> slots = Lists.newArrayListWithExpectedSize(andLen); for (int i = 0; i < andLen; i++) { int orlen = in.readInt(); List<KeyRange> orclause = Lists.newArrayListWithExpectedSize(orlen); slots.add(orclause); int maxSlotLength = 0; for (int j = 0; j < orlen; j++) { KeyRange range = new KeyRange(); range.readFields(in); if (range.getLowerRange().length > maxSlotLength) { maxSlotLength = range.getLowerRange().length; } if (range.getUpperRange().length > maxSlotLength) { maxSlotLength = range.getUpperRange().length; } orclause.add(range); } maxLength += maxSlotLength; } this.init(slots, schema, maxLength); }