@SuppressWarnings("unchecked")
        private ReflectiveSupplier<Map<Object, Object>> createSupplierFromReflection(Class<?> into) {
            try {
                // Try to create the map from an empty constructor.
                Class<Map<Object, Object>> collectionTarget = (Class<Map<Object, Object>>) into;
                Constructor<Map<Object, Object>> mapCtor = collectionTarget.getDeclaredConstructor();
                return mapCtor::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 Map " + 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