protected void consumeNumber(TensorType.Value cellValueType,
                                     Consumer<Float> consumeFloat,
                                     Consumer<Double> consumeDouble) {
            skipSpace();
            int nextNumberEnd = requiredNextStopCharIndex(position);
            String cellValueString = string.substring(position, nextNumberEnd);
            try {
                switch (cellValueType) {
                    case DOUBLE -> consumeDouble.accept(Double.parseDouble(cellValueString));
                    case FLOAT, BFLOAT16, INT8 -> consumeFloat.accept(Float.parseFloat(cellValueString));
                    default -> throw new IllegalArgumentException(cellValueType + " is not supported");
                };
            } catch (NumberFormatException e) {
                throw new IllegalArgumentException("At value position " + position + ": '" +
                                                   cellValueString + "' is not a valid " + cellValueType);
            }
            finally {
                position = nextNumberEnd;
            }
        }
Derives the tensor type from the first address string in the given tensor string
vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java