diff --git a/mpple-core/pom.xml b/mpple-core/pom.xml
index 8a3b451..97fcc5b 100644
--- a/mpple-core/pom.xml
+++ b/mpple-core/pom.xml
@@ -32,6 +32,12 @@
joda-time
true
+
+ io.vavr
+ vavr
+ 0.9.2
+ true
+
diff --git a/mpple-core/src/main/java/ml/wonwoo/mapped/converter/JavasLangConverter.java b/mpple-core/src/main/java/ml/wonwoo/mapped/converter/JavasLangConverter.java
new file mode 100644
index 0000000..d93e944
--- /dev/null
+++ b/mpple-core/src/main/java/ml/wonwoo/mapped/converter/JavasLangConverter.java
@@ -0,0 +1,54 @@
+package ml.wonwoo.mapped.converter;
+
+import io.vavr.collection.List;
+import io.vavr.collection.Seq;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import ml.wonwoo.mapped.mapping.MappingInstance;
+import ml.wonwoo.util.ClassUtils;
+import net.jodah.typetools.TypeResolver;
+
+public class JavasLangConverter implements MappedConverter {
+
+ private final MappingInstance mappingInstance;
+
+ public JavasLangConverter(MappingInstance mappingInstance) {
+ this.mappingInstance = mappingInstance;
+ }
+
+ @Override
+ public boolean supports(Class> target) {
+ return Seq.class.isAssignableFrom(target);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected Seq collectionCreate(Class clazz) {
+ if (clazz.isInterface()) {
+ return List.Nil.instance();
+ } else {
+ return (Seq) ClassUtils.instantiateClass(clazz);
+ }
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public Object convert(Class> rootClass, Object value, Class> target, Object context) {
+ try {
+ Method method = rootClass.getDeclaredMethod((String) context, target);
+ Type genericType = ClassUtils.getGenericType(method);
+ Class> type = TypeResolver.resolveRawArgument(genericType, rootClass);
+ Seq