It is allowed to assign `var` in Java 10 with a string like:

```
var foo = "boo";

```

While it is not allowed to assign it with a lambda expression such as:

```
var predicateVar = apple -> apple.getColor().equals("red");

```

Why can't it infer a lambda or method reference type when it can infer the rest like `String`, `ArrayList`, user class, etc.?