No, it should be &quot;and&quot;.  Think of it this way: if the body completes normally, the compiler inserts a &quot;return;&quot; statement at the end (without an expression).<br><br><div class="gmail_quote">On Mon, Dec 14, 2009 at 11:18 PM, Peter Levart <span dir="ltr">&lt;<a href="mailto:peter.levart@marand.si">peter.levart@marand.si</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="font-family: &#39;Sans Serif&#39;; font-size: 10pt; font-weight: 400; font-style: normal;">
<p style="margin: 0px; text-indent: 0px;">reads...</p>
<p style="margin: 0px; text-indent: 0px;"></p>
<p style="margin: 0px; text-indent: 0px;">&quot;A lambda expression may be converted to any compatible interface type by the <span style="font-style: italic;">lambda conversion</span>, which is a kind of widening reference conversion.</p>


<p style="margin: 12px 0px; text-indent: 0px;">There is a <span style="font-style: italic;">lambda conversion</span> from a lambda expression to every interface type that has a single method <span style="font-style: italic;">m</span> such that the lambda expression is compatible with<span style="font-style: italic;"> m</span>. A lambda expression is <span style="font-style: italic;">compatible with</span> a method <span style="font-style: italic;">m</span> iff all of the following hold: </p>


<ul><li style="margin: 12px 0px; text-indent: 0px;">Either </li>
<ul type="circle"><li style="margin: 0px; text-indent: 0px;">The lambda expression is an expression lambda, and there is an assignment conversion from the type of its result expression to the return type of <span style="font-style: italic;">m</span>; or </li>


<li style="margin: 0px; text-indent: 0px;">The lambda expression is a statement lambda, and either </li></ul>
<ul type="circle"><li style="margin: 0px; text-indent: 0px;">its body cannot complete normally *<span style="font-weight: 600;">and*</span> there is an assignment conversion from the type of the expression in each of its return statements to the return type of <span style="font-style: italic;">m</span>; or </li>


<li style="margin: 0px; text-indent: 0px;">all of its return statements yield no return value, and the method <span style="font-style: italic;">m</span> has return type void or java.lang.Void </li></ul>
<li style="margin: 0px; text-indent: 0px;">...</li></ul>
<p style="margin: 12px 0px; text-indent: 0px;">&quot;</p>
<p style="margin: 12px 0px; text-indent: 0px;"></p>
<p style="margin: 12px 0px; text-indent: 0px;">Shouldn&#39;t the bolded <span style="font-weight: 600;">*and*</span> really be <span style="font-weight: 600;">*or*</span> ?</p>
<p style="margin: 12px 0px; text-indent: 0px;"></p>
<p style="margin: 12px 0px; text-indent: 0px;">Peter</p>
<p style="margin: 12px 0px; text-indent: 0px;"></p></div></blockquote></div><br>