@Override
    public ClickHouseGeoPolygonValue copy(boolean deep) {
        if (!deep) {
            return new ClickHouseGeoPolygonValue(getValue());
        }

        double[][][] value = getValue();
        double[][][] newValue = new double[value.length][][];
        int index = 0;
        for (double[][] v : value) {
            double[][] nv = new double[v.length][];
            int i = 0;
            for (double[] d : v) {
                nv[i++] = Arrays.copyOf(d, d.length);
            }
            newValue[index++] = nv;
        }
        return new ClickHouseGeoPolygonValue(newValue);
    }
Update value of the given object or create a new instance if {@code ref} is
null.

@param ref   object to update, could be null
@param value value
@return same object as {@code ref} or a new instance if it's null
clickhouse-data/src/main/java/com/clickhouse/data/value/ClickHouseGeoPolygonValue.java