TupleLatticeElement<Variable, NullLatticeElement> tVal = ops.copy(value);
TupleLatticeElement<Variable, NullLatticeElement> fVal = ops.copy(value);
if (rightValue == NullLatticeElement.NULL || leftValue == NullLatticeElement.NULL) {
Variable opToChange = leftValue == NullLatticeElement.NULL ? binop.getOperand2() : binop.getOperand1();
if (binop.getOperator() == BinaryOperator.REL_EQ) {
tVal.put(opToChange, NullLatticeElement.NULL);
fVal.put(opToChange, NullLatticeElement.NOT_NULL);
}
else {
fVal.put(opToChange, NullLatticeElement.NULL);
tVal.put(opToChange, NullLatticeElement.NOT_NULL);
}
}
else if (rightValue == NullLatticeElement.NOT_NULL || leftValue == NullLatticeElement.NOT_NULL) {
Variable opToChange = leftValue == NullLatticeElement.NOT_NULL ? binop.getOperand2() : binop.getOperand1();
if (binop.getOperator() == BinaryOperator.REL_EQ) {
tVal.put(opToChange, NullLatticeElement.NOT_NULL);
}
else {
fVal.put(opToChange, NullLatticeElement.NOT_NULL);