@SuppressWarnings("unchecked")
        private ReflectiveSupplier<Collection<Object>> createSupplierFromReflection(Class<?> into) {
            try {
                // Create the collection type by assuming it has a public, zero-arg constructor.
                Class<Collection<Object>> collectionTarget = (Class<Collection<Object>>) into;
                Constructor<Collection<Object>> classCtor = collectionTarget.getDeclaredConstructor();
                classCtor.setAccessible(true);
                return classCtor::newInstance;
            } catch (NoSuchMethodException e) {
                // We *could* pass here and try to let the next deserializer take a crack, but that would
                // probably never work in practice and results in a less descriptive error message.
                throw new NodeDeserializationException(
                        "Unable to find a zero-arg constructor for Collection " + into.getName(),
                        SourceLocation.NONE,
                        e);
            }
        }
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