class ResetSettingsPlan implements Plan {

    private final AnalyzedResetStatement resetAnalyzedStatement;

    public ResetSettingsPlan(AnalyzedResetStatement resetAnalyzedStatement) {
        this.resetAnalyzedStatement = resetAnalyzedStatement;
    }

    @Override
    public StatementType type() {
        return StatementType.MANAGEMENT;
    }

    @Override
    public void executeOrFail(DependencyCarrier dependencies,
                              PlannerContext plannerContext,
                              RowConsumer consumer,
                              Row params,
                              SubQueryResults subQueryResults) {

        Function<? super Symbol, Object> eval = x -> SymbolEvaluator.evaluate(plannerContext.transactionContext(),
                                                                              plannerContext.nodeContext(),
                                                                              x,
                                                                              params,
                                                                              subQueryResults);

        Settings settings = buildSettingsFrom(resetAnalyzedStatement.settingsToRemove(), eval);

        ClusterUpdateSettingsRequest request = new ClusterUpdateSettingsRequest()
            .persistentSettings(settings)
            .transientSettings(settings);
        OneRowActionListener<ClusterUpdateSettingsResponse> actionListener = new OneRowActionListener<>(
            consumer,
            r -> r.isAcknowledged() ? new Row1(1L) : new Row1(0L));
        dependencies.client().execute(ClusterUpdateSettingsAction.INSTANCE, request).whenComplete(actionListener);
    }

    @VisibleForTesting
    static Settings buildSettingsFrom(Set<Symbol> settings, Function<? super Symbol, Object> eval) {<FILL_FUNCTION_BODY>}
}

        Settings.Builder settingsBuilder = Settings.builder();
        for (Symbol symbol : settings) {
            String settingsName = eval.apply(symbol).toString();
            List<String> settingNames = CrateSettings.settingNamesByPrefix(settingsName);
            if (settingNames.size() == 0) {
                throw new IllegalArgumentException(String.format(Locale.ENGLISH,
                                                                 "Setting '%s' is not supported",
                                                                 settingsName));
            }
            for (String name : settingNames) {
                CrateSettings.checkIfRuntimeSetting(name);
                if (CrateSettings.isValidSetting(name) == false) {
                    throw new IllegalArgumentException("Setting '" + settingNames + "' is not supported");
                }
                settingsBuilder.put(name, (String) null);
            }
        }
        return settingsBuilder.build();
    
<no_super_class>