@SuppressWarnings("unchecked")
    public SelfT options(Map<ClickHouseOption, Serializable> options) {
        checkSealed();

        if (changeListener == null) {
            this.options.clear();
            if (options != null) {
                for (Entry<ClickHouseOption, Serializable> e : options.entrySet()) {
                    option(e.getKey(), e.getValue());
                }
            }
            resetCache();
        } else {
            Map<ClickHouseOption, Serializable> m = new HashMap<>();
            m.putAll(this.options);
            if (options != null) {
                for (Entry<ClickHouseOption, Serializable> e : options.entrySet()) {
                    option(e.getKey(), e.getValue());
                    m.remove(e.getKey());
                }
            }
            for (ClickHouseOption o : m.keySet()) {
                removeOption(o);
            }
        }

        return (SelfT) this;
    }
Sets all options. {@code option} is for configuring client's behaviour, while
{@code setting} is for server.

@param options options
@return the request itself
clickhouse-client/src/main/java/com/clickhouse/client/ClickHouseRequest.java