if (binary.getOperator().getType() == TokenType.AMPERSAND_AMPERSAND) {
propagateTrueState(binary.getLeftOperand());
propagateTrueState(binary.getRightOperand());
}
} else if (condition instanceof IsExpression) {
IsExpression is = (IsExpression) condition;
if (is.getNotOperator() == null) {
// Since an is-statement doesn't actually change the type, we don't
// let it affect the propagated type when it would result in a loss
// of precision.
overrideExpression(is.getExpression(), is.getType().getType(), false);
}
} else if (condition instanceof PrefixExpression) {
PrefixExpression prefix = (PrefixExpression) condition;
if (prefix.getOperator().getType() == TokenType.BANG) {
propagateFalseState(prefix.getOperand());