@Override
        public Value evaluate(List<Value> arguments) {
            String url = arguments.get(0).expectStringValue().getValue();
            try {
                URL parsed = new URL(url);
                if (parsed.getQuery() != null) {
                    return Value.emptyValue();
                }

                boolean isIpAddr = isIpAddr(parsed.getHost());
                String path = parsed.getPath();
                String normalizedPath = normalizePath(path);

                Map<Identifier, Value> values = new LinkedHashMap<>();
                values.put(SCHEME, Value.stringValue(parsed.getProtocol()));
                values.put(AUTHORITY, Value.stringValue(parsed.getAuthority()));
                values.put(PATH, Value.stringValue(path));
                values.put(NORMALIZED_PATH, Value.stringValue(normalizedPath));
                values.put(IS_IP, Value.booleanValue(isIpAddr));
                return Value.recordValue(values);
            } catch (MalformedURLException e) {
                return Value.emptyValue();
            }
        }
A {@link FunctionDefinition} for the {@link ParseUrl} function.
smithy-rules-engine/src/main/java/software/amazon/smithy/rulesengine/language/syntax/expressions/functions/ParseUrl.java