static String createErrorMessage(Type into, String pointer, Node node, String message) {
        String formatted = String.format(
                "Deserialization error at %s: unable to create %s from %s",
                getNormalizedPointer(pointer),
                into.getTypeName(),
                Node.printJson(node));
        if (message != null) {
            formatted += ": " + message;
        }
        return formatted;
    }
Performs the inner deserialization of a type.

<p>This method is invoked by instances of {@link ObjectCreator} to
recursively deserialize a type while also tracking the updated JSON
pointer context for error reporting.

@param value Node value to deserialize.
@param pointer The JSON Pointer to the location of the value being deserialized.
@param into The type being created.
@param mapper The {@code Mapper} that can be invoked to recursively deserialize.
@param <T> The type of value to create.
@return Returns the created value.
smithy-model/src/main/java/software/amazon/smithy/model/node/NodeMapper.java