public void load(SerializedField metadata, ArrowBuf buffer) {
listVector.clear();
final SerializedField offsetMetadata = metadata.getChild(0);
final int offsetLength = offsetMetadata.getBufferLength();
loadOffsetBuffer(offsetMetadata, buffer);
final SerializedField bitMetadata = metadata.getChild(1);
final int bitLength = bitMetadata.getBufferLength();
loadValidityBuffer(bitMetadata, buffer.slice(offsetLength, bitLength));
final SerializedField vectorMetadata = metadata.getChild(2);
if (listVector.getDataVector() == BaseRepeatedValueVector.DEFAULT_DATA_VECTOR) {
listVector.addOrGetVector(FieldType.nullable(getArrowMinorType(vectorMetadata.getMajorType().getMinorType()).getType()));
}
final int vectorLength = vectorMetadata.getBufferLength();
TypeHelper.load(listVector.vector, vectorMetadata, buffer.slice(offsetLength + bitLength, vectorLength));
listVector.setLastSet(metadata.getValueCount());
listVector.valueCount = metadata.getValueCount();
}