@Override
                public Value visitEndpointRule(Endpoint endpoint) {
                    EndpointValue.Builder builder = EndpointValue.builder()
                            .sourceLocation(endpoint)
                            .url(endpoint.getUrl()
                                    .accept(RuleEvaluator.this)
                                    .expectStringValue()
                                    .getValue());

                    for (Map.Entry<Identifier, Literal> entry : endpoint.getProperties().entrySet()) {
                        builder.putProperty(entry.getKey().toString(), entry.getValue().accept(RuleEvaluator.this));
                    }

                    for (Map.Entry<String, List<Expression>> entry : endpoint.getHeaders().entrySet()) {
                        List<String> values = new ArrayList<>();
                        for (Expression expression : entry.getValue()) {
                            values.add(expression.accept(RuleEvaluator.this).expectStringValue().getValue());
                        }
                        builder.putHeader(entry.getKey(), values);
                    }
                    return builder.build();
                }
Evaluates the given condition in the current scope.

@param condition the condition to evaluate.
@return the value returned by the condition.
smithy-rules-engine/src/main/java/software/amazon/smithy/rulesengine/language/evaluation/RuleEvaluator.java