void addForwardReference(String id, BiFunction<ShapeId, ShapeType, ValidationEvent> receiver) {
        int memberPosition = id.indexOf('$');

        // Check for members by removing the member and checking for the root shape.
        if (memberPosition > 0 && memberPosition < id.length() - 1) {
            addForwardReference(
                    id.substring(0, memberPosition),
                    (resolved, type) -> receiver.apply(resolved.withMember(id.substring(memberPosition + 1)), type));
        } else {
            String resolved = useShapes.containsKey(id) ? useShapes.get(id).toString() : id;
            addOperation(new LoadOperation.ForwardReference(namespace, resolved, receiver));
        }
    }
Only allow nesting up to 64 arrays/objects in node values.
smithy-model/src/main/java/software/amazon/smithy/model/loader/IdlModelLoader.java