private void validateBoundIndex(TensorType.IndexedBoundDimension dimension) throws IOException {
        try {
            int value = Integer.parseInt(parser.getValueAsString());
            if (value >= dimension.size().get().intValue())
                throw new InvalidConstantTensorException(parser, String.format("Index %s not within limits of bound dimension '%s'", value, dimension.name()));
        } catch (NumberFormatException e) {
            throwCoordinateIsNotInteger(parser.getValueAsString(), dimension.name());
        }
    }
Tensor labels are always strings. Labels for a mapped dimension can be any string,
but those for indexed dimensions needs to be able to be interpreted as integers, and,
additionally, those for indexed bounded dimensions needs to fall within the dimension size.
config-model/src/main/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidator.java