To avoid misunderstandings: yes, equals() is written according to hashCode, i.e., according to the usual Java conventions.<br><br>If<br><br>   - an object of class Two contains a member of class One, and<br>   - one object Two and one object One are facts, and<br>

   - a rule modifies One, changing its hashCode<br><br>then<br><br>   another rule containing the patterns<br>   $one: One()<br>   $two: Two( $x: one == $one )<br><br>does NOT fire (any more).<br><br>If you use the constraint<br>
   one == $one || != $one<br>the rule will fire, and you can observe that hashCode results for $one and $x are the same and that $one.equals( $x ) returns true.<br><br>Reproduced using 5.1.1 and 5.2.x<br><br>-W<br><br><br>
<br>