Expression _right = comparison.getRight();
Type rightType = null;
Result<Type> result_1 = typeInternal(emptyEnvironment(), _trace_, _right);
checkAssignableTo(result_1.getFirst(), Type.class);
rightType = (Type) result_1.getFirst();
<BUG>boolean _or = false;
if (((leftType instanceof IntType) && (rightType instanceof IntType))) {
_or = true;
} else {
_or = (((leftType instanceof IntType) && (rightType instanceof IntType)) || ((leftType instanceof StringType) && (rightType instanceof StringType)));

}
if (!_or) {</BUG>
sneakyThrowRuleFailedException("(leftType instanceof IntType && rightType instanceof IntType) || (leftType instanceof StringType && rightType instanceof StringType)");

Expression _right = comparison.getRight();
Type rightType = null;
Result<Type> result_1 = typeInternal(emptyEnvironment(), _trace_, _right);
checkAssignableTo(result_1.getFirst(), Type.class);
rightType = (Type) result_1.getFirst();
if (!(((leftType instanceof IntType) && (rightType instanceof IntType)) || ((leftType instanceof StringType) && (rightType instanceof StringType)))) {
sneakyThrowRuleFailedException("(leftType instanceof IntType && rightType instanceof IntType) || (leftType instanceof StringType && rightType instanceof StringType)");
