class Mapping {
        private String target;

        private String source;

        private String type;

        private transient Class typeClass;

        public Mapping() {

        }

        public Mapping(String target, String source) {
            this.target = target;
            this.source = source;
        }

        public Mapping(String target, String source, String type) {
            this.target = target;
            this.source = source;
            this.type = type;
        }

        @SneakyThrows
        public Class<?> getTypeClass() {<FILL_FUNCTION_BODY>}

        @SneakyThrows
        public Object getData(Map<String, Object> sourceData) {
            Object data = sourceData.get(this.source);
            if (data == null && this.source.contains("${")) {
                data = ExpressionUtils.analytical(this.source, sourceData, "spel");
            }
            if (data == null) {
                return null;
            }
            return getTypeClass() != null ? converter.convert(data, getTypeClass(), null) : data;
        }

    }

            if (typeClass == null && type != null) {
                String lowerType = type.toLowerCase();
                switch (lowerType) {
                    case "int":
                    case "integer":
                        return typeClass = Integer.class;
                    case "string":
                        return typeClass = String.class;
                    case "double":
                        return typeClass = Double.class;
                    case "decimal":
                        return typeClass = BigDecimal.class;
                    case "boolean":
                        return typeClass = Boolean.class;
                    case "date":
                        return typeClass = Date.class;
                    default:
                        return typeClass = Class.forName(type);
                }
            }
            if (typeClass == Void.class) {
                return null;
            }
            return typeClass;
        
<no_super_class>