### Question:
ValueBitSet { public boolean get(int nBit) { int lIndex = nBit / BITS_PER_LONG; int bIndex = nBit % BITS_PER_LONG; return (bits[lIndex] & (1L << bIndex)) != 0; } private  ValueBitSet(); private  ValueBitSet(ValueSchema schema); static ValueBitSet newInstance(ValueSchema schema); int getMaxSetBit(); int getNullCount(int nBit, int nFields); int toBytes(byte[] b, int offset); void clear(); boolean get(int nBit); void set(int nBit); void or(ImmutableBytesWritable ptr); void or(ImmutableBytesWritable ptr, int length); int getEstimatedLength(); static int getSize(int nBits); int getSize(); void or(ValueBitSet isSet); final static ValueBitSet EMPTY_VALUE_BITSET; }### Answer:
@Test public void testMinNullableIndex() { final int minNullableIndex = 4; int numFields = 6; KeyValueSchemaBuilder builder = new KeyValueSchemaBuilder(minNullableIndex); for (int i = 0; i < numFields; i++) { final int fieldIndex = i; builder.addField(new PDatum() { @Override public boolean isNullable() { return fieldIndex < minNullableIndex; } @Override public SortOrder getSortOrder() { return SortOrder.getDefault(); } @Override public Integer getScale() { return null; } @Override public Integer getMaxLength() { return null; } @Override public PDataType getDataType() { return PDataType.values()[fieldIndex % PDataType.values().length]; } }); } KeyValueSchema kvSchema = builder.build(); assertFalse(kvSchema.getFields().get(0).isNullable()); assertFalse(kvSchema.getFields().get(minNullableIndex - 1).isNullable()); assertTrue(kvSchema.getFields().get(minNullableIndex).isNullable()); assertTrue(kvSchema.getFields().get(minNullableIndex + 1).isNullable()); }