@Override
        public IdRefTrait createTrait(ShapeId target, Node value) {
            Builder builder = builder().sourceLocation(value);
            value.expectObjectNode()
                    .getMember("selector", Selector::fromNode, builder::selector)
                    .getBooleanMember("failWhenMissing", builder::failWhenMissing)
                    .getStringMember("errorMessage", builder::errorMessage);
            IdRefTrait result = builder.build();
            result.setNodeCache(value);
            return result;
        }
Indicates that a string value must contain a valid shape ID.

<p>{@code failWhenMissing} can be set to true to fail when the
shape ID contained in a string shape cannot be found in the result
set of the {@code selector} property. {@code failWhenMissing} defaults to
{@code false} when not set.

<p>The {@code selector} property is used to query the model for all shapes
that match a shape selector. The value contained within the string shape
targeted by this trait MUST match one of the shapes returns by the shape
selector if {@code failWhenMissing} is set to true. {@code selector}
defaults to "*" when not set.
smithy-model/src/main/java/software/amazon/smithy/model/traits/IdRefTrait.java