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

        return new ClickHouseTupleValue(new ArrayList<>(getValue()));
    }
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/ClickHouseTupleValue.java