def _handle_comparison(self, truism):
<EOL>is_lt, is_equal, is_unsigned = self.comparison_info[truism.op]<EOL>size = len(truism.args[<NUM_LIT:0>])<EOL>int_max = <NUM_LIT:2>**size-<NUM_LIT:1> if is_unsigned else <NUM_LIT:2>**(size-<NUM_LIT:1>)-<NUM_LIT:1><EOL>int_min = -<NUM_LIT:2>**(size-<NUM_LIT:1>)<EOL>left_min = self._min(truism.args[<NUM_LIT:0>], signed=not is_unsigned)<EOL>left_max = self._max(truism.args[<NUM_LIT:0>], signed=not is_unsigned)<EOL>right_min = self._min(truism.args[<NUM_LIT:1>], signed=not is_unsigned)<EOL>right_max = self._max(truism.args[<NUM_LIT:1>], signed=not is_unsigned)<EOL>bound_max = right_max if is_equal else (right_max-<NUM_LIT:1> if is_lt else right_max+<NUM_LIT:1>)<EOL>bound_min = right_min if is_equal else (right_min-<NUM_LIT:1> if is_lt else right_min+<NUM_LIT:1>)<EOL>if is_lt and bound_max < int_min:<EOL><INDENT>raise ClaripyBalancerUnsatError()<EOL><DEDENT>elif not is_lt and bound_min > int_max:<EOL><INDENT>raise ClaripyBalancerUnsatError()<EOL><DEDENT>current_min = int_min<EOL>current_max = int_max<EOL>if is_lt:<EOL><INDENT>current_max = min(int_max, left_max, bound_max)<EOL>self._add_upper_bound(truism.args[<NUM_LIT:0>], current_max)<EOL><DEDENT>else:<EOL><INDENT>current_min = max(int_min, left_min, bound_min)<EOL>self._add_lower_bound(truism.args[<NUM_LIT:0>], current_min)<EOL><DEDENT>
Handles all comparisons.