@Override
        public AttributeValue getProperty(String property) {
            switch (property) {
                case "name":
                    return AttributeValue.literal(id.getName());
                case "namespace":
                    return AttributeValue.literal(id.getNamespace());
                case "member":
                    return id.getMember()
                            .<AttributeValue>map(Literal::new)
                            .orElse(EMPTY);
                case LENGTH:
                    // Length returns the length of the shape ID.
                    return AttributeValue.literal(id.toString().length());
                default:
                    throw new SelectorException("Invalid nested 'id' selector attribute property: " + property);
            }
        }
Grabs values out of a {@link ShapeId} or uses the shape ID directly
as a string, and when cast to a string, returns the absolute shape ID.

<p>This attribute has the following properties:

<ul>
    <li>namespace: The shape ID namespace.</li>
    <li>name: The shape ID name.</li>
    <li>member: The optionally present shape ID member.</li>
</ul>
smithy-model/src/main/java/software/amazon/smithy/model/selector/AttributeValueImpl.java