static Class<?> classFromType(Type type) {
        if (type instanceof Class) {
            return (Class<?>) type;
        } else if (type instanceof ParameterizedType) {
            return (Class<?>) ((ParameterizedType) type).getRawType();
        } else if (type instanceof WildcardType) {
            return classFromType(((WildcardType) type).getUpperBounds()[0]);
        } else if (type instanceof TypeVariable<?>) {
            // TODO: implement this to enable improved builder detection
            throw new IllegalArgumentException("TypeVariable targets are not implemented: " + type);
        } else if (type instanceof GenericArrayType) {
            throw new IllegalArgumentException("GenericArrayType targets are not implemented: " + type);
        } else {
            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