private void decodeCells(GrowableByteBuffer buffer, Tensor.Builder builder, TensorType type) {
        switch (serializationValueType) {
            case DOUBLE: decodeCells(buffer, builder, type, buffer::getDouble); break;
            case FLOAT: decodeCells(buffer, builder, type, () -> (double)buffer.getFloat()); break;
            case BFLOAT16: decodeCells(buffer, builder, type, () ->
                    (double)TypedBinaryFormat.floatFromBFloat16Bits(buffer.getShort())); break;
            case INT8: decodeCells(buffer, builder, type, () -> (double)buffer.get()); break;
        }
    }
Implementation of a sparse binary format for a tensor on the form:

Sorted dimensions = num_dimensions [dimension_str_len dimension_str_bytes]*
Cells = num_cells [label_1_str_len label_1_str_bytes ... label_N_str_len label_N_str_bytes cell_value]*

Note that the dimensions are sorted and the tensor address labels are given in the same sorted order.
Unspecified labels are encoded as the empty string "".

@author geirst
vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java