diff --git a/java-symbol-solver-core/src/test/java/me/tomassetti/symbolsolver/resolution/LambdaTest.java b/java-symbol-solver-core/src/test/java/me/tomassetti/symbolsolver/resolution/LambdaTest.java
new file mode 100644
index 0000000..7869711
--- /dev/null
+++ b/java-symbol-solver-core/src/test/java/me/tomassetti/symbolsolver/resolution/LambdaTest.java
@@ -0,0 +1,36 @@
+package me.tomassetti.symbolsolver.resolution;
+
+import com.github.javaparser.ParseException;
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.body.MethodDeclaration;
+import com.github.javaparser.ast.expr.Expression;
+import com.github.javaparser.ast.expr.MethodCallExpr;
+import com.github.javaparser.ast.stmt.ReturnStmt;
+import com.github.javaparser.ast.stmt.SwitchStmt;
+import me.tomassetti.symbolsolver.javaparser.Navigator;
+import me.tomassetti.symbolsolver.model.declarations.ValueDeclaration;
+import me.tomassetti.symbolsolver.model.resolution.SymbolReference;
+import me.tomassetti.symbolsolver.model.typesystem.TypeUsage;
+import me.tomassetti.symbolsolver.resolution.javaparser.JavaParserFacade;
+import me.tomassetti.symbolsolver.resolution.typesolvers.JreTypeSolver;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class LambdaTest extends AbstractTest {
+
+    @Test
+    public void lambdaMap() throws ParseException {
+        CompilationUnit cu = parseSample("Lambda");
+        com.github.javaparser.ast.body.ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "Agenda");
+        MethodDeclaration method = Navigator.demandMethod(clazz, "lambdaMap");
+        ReturnStmt returnStmt = Navigator.findReturnStmt(method);
+        Expression expression = returnStmt.getExpr();
+
+        TypeUsage type = JavaParserFacade.get(new JreTypeSolver()).getType(expression);
+        assertEquals("java.util.stream.Stream<java.lang.String>", type.describe());
+    }
+
+
+}
diff --git a/java-symbol-solver-core/src/test/resources/Lambda.java.txt b/java-symbol-solver-core/src/test/resources/Lambda.java.txt
new file mode 100644
index 0000000..457a589
--- /dev/null
+++ b/java-symbol-solver-core/src/test/resources/Lambda.java.txt
@@ -0,0 +1,11 @@
+import java.util.List;
+
+public class Agenda {
+
+    private List<String> persons;
+
+    public void lambdaMap(String personName) {
+        return persons.stream().map(p -> p.toLowerCase());
+    }
+
+}
