{
super.meet(node);
SqlExpr left = node.getLeftArg();
SqlExpr right = node.getRightArg();
if (left instanceof FalseValue || right instanceof FalseValue) {
replace(node, new FalseValue());
}
else if (left instanceof TrueValue && right instanceof TrueValue) {
replace(node, new TrueValue());
}
else if (left instanceof TrueValue) {
replace(node, right.clone());
}
else if (right instanceof TrueValue) {
replace(node, left.clone());
}
else if (right instanceof SqlNull || left instanceof SqlNull) {
replace(node, new SqlNull());
}
else if (right instanceof SqlNot && ((SqlNot)right).getArg().equals(left)) {
replace(node, new FalseValue());
}
else if (left instanceof SqlNot && ((SqlNot)left).getArg().equals(right)) {
replace(node, new FalseValue());
}
}