public static OptimizerService.CompositeDimension EncodeCompositeDimension(CompositeDimension dimension)
        {
            var instance = new OptimizerService.CompositeDimension
            {
                Name      = dimension.Name,
                ChunkType = DimensionToGrpcType(dimension.ChunkType),
            };

            instance.Chunks.AddRange(dimension.Values.Select(chunk => EncodeDimension(chunk)));
            return(instance);
        }
 public static CompositeDimension DecodeCompositeDimension(OptimizerService.CompositeDimension dimension)
 {
     IDimension[] chunks = dimension.Chunks.Select(serialized_chunk => DecodeDimension(serialized_chunk)).ToArray();
     return(new CompositeDimension(name: dimension.Name, chunkType: GrpcTypeToDimension(dimension.ChunkType), chunks));
 }