for(int i=0;i<schema.numFields();i++) {
FieldDefinition fieldDef = schema.getFieldDefinition(i);
int length = rec.getFieldLength(schema.getFieldName(i));
TypedFieldDefinition typedFieldDef;
int ordinal;
int mappedOrdinal;
switch(fieldDef.getFieldType()) {
case OBJECT:
typedFieldDef = (TypedFieldDefinition)fieldDef;
if(VarInt.readVNull(fromSpace, currentPointerPosition)) {
VarInt.writeVNull(toBuffer);
currentPointerPosition++;
} else {
ordinal = VarInt.readVInt(fromSpace, currentPointerPosition);
currentPointerPosition += VarInt.sizeOfVInt(ordinal);
mappedOrdinal = getMappedOrdinal(typedFieldDef.getSubType(), ordinal);
VarInt.writeVInt(toBuffer, mappedOrdinal);
}
break;
case SET:
typedFieldDef = (TypedFieldDefinition)fieldDef;
currentPointerPosition = copySetWithRemappedOrdinals(fromSpace, currentPointerPosition, toBuffer, typedFieldDef.getSubType());
break;
case LIST:
typedFieldDef = (TypedFieldDefinition)fieldDef;
currentPointerPosition = copyListWithRemappedOrdinals(toBuffer, fromSpace, currentPointerPosition, typedFieldDef.getSubType());
break;
case MAP:
MapFieldDefinition mapFieldDef = (MapFieldDefinition)fieldDef;
currentPointerPosition = copyMapWithRemappedOrdinals(toBuffer, fromSpace, currentPointerPosition, mapFieldDef);