<html>
<body>
This inspection is intended for J2ME and other highly resource constrained environments.
Applying the results of this inspection without consideration might have negative effects on code clarity and design.
<p>
Reports if statements of the form
<b>if (<i>condition</i>) return true else return <i>foo</i></b>
or <b>if (<i>condition</i>) return false else return <i>foo</i></b>.
These expressions may be safely simplified to
<b>return <i>condition</i> && <i>foo</i></b> or
<b>return !<i>condition</i> || <i>foo</i></b>, respectively.
  <!-- tooltip end -->
<p>

</body>
</html>