private ReflectiveSupplier<Collection<Object>> createSupplier(Type targetType) {
            Class<?> targetClass = classFromType(targetType);
            if (targetClass != null) {
                // Create an ArrayList for most cases of lists or iterables.
                if (targetClass == List.class
                        || targetClass == Collection.class
                        || targetClass == Object.class
                        || targetClass == ArrayList.class
                        || targetClass == Iterable.class) {
                    return ArrayList::new;
                } else if (targetClass == Set.class
                        || targetClass == HashSet.class
                        || targetClass == LinkedHashSet.class) {
                    // Special casing for Set or HashSet.
                    return LinkedHashSet::new;
                } else if (Collection.class.isAssignableFrom(targetClass)) {
                    return createSupplierFromReflection(targetClass);
                }
            }

            return null;
        }
The default implementations use to convert Nodes into Objects through a {@link NodeMapper}.
smithy-model/src/main/java/software/amazon/smithy/model/node/DefaultNodeDeserializers.java