Program: 59594
Project: 59594
Buggy source:
@Test public void testExpressionParsing(){
  ExpressionParser.DUMP_EXPRESSION_INFO=true;
  t(Expression.null_(),"String_Node_Str");
  t(Expression.boolean_(true),"String_Node_Str");
  t(Expression.boolean_(false),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.integral(0),"String_Node_Str");
  t(Expression.integral(2),"String_Node_Str");
  t(Expression.integral(-2),"String_Node_Str");
  t(Expression.integral(222222222),"String_Node_Str");
  t(Expression.integral(-222222222),"String_Node_Str");
  t(Expression.int64(-2),"String_Node_Str");
  t(Expression.single(-2f),"String_Node_Str");
  t(Expression.single(-2.34f),"String_Node_Str");
  t(Expression.double_(-2.34d),"String_Node_Str");
  t(Expression.double_(-2E+1),"String_Node_Str");
  t(Expression.double_(2E-1),"String_Node_Str");
  t(Expression.double_(-2.1E+1),"String_Node_Str");
  t(Expression.double_(-2.1E-1),"String_Node_Str");
  t(Expression.dateTime(new LocalDateTime("String_Node_Str")),"String_Node_Str");
  t(Expression.dateTimeOffset(new DateTime("String_Node_Str")),"String_Node_Str");
  t(Expression.time(new LocalTime("String_Node_Str")),"String_Node_Str");
  t(Expression.guid(Guid.fromString("String_Node_Str")),"String_Node_Str");
  t(Expression.guid(Guid.fromString("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.binary(new byte[]{(byte)0xff}),"String_Node_Str");
  t(Expression.binary(new byte[]{(byte)0x00,(byte)0xaa,(byte)0xff}),"String_Node_Str");
  t(Expression.simpleProperty("String_Node_Str"),"String_Node_Str");
  t(Expression.simpleProperty("String_Node_Str"),"String_Node_Str");
  t(Expression.eq(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.eq(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.eq(Expression.string("String_Node_Str"),Expression.simpleProperty("String_Node_Str")),"String_Node_Str");
  t(Expression.ne(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  EqExpression exp=Expression.eq(Expression.simpleProperty("String_Node_Str"),Expression.integral(1));
  t(Expression.and(exp,exp),"String_Node_Str");
  t(Expression.or(exp,exp),"String_Node_Str");
  t(Expression.or(exp,Expression.and(exp,exp)),"String_Node_Str");
  t(Expression.or(Expression.and(exp,exp),exp),"String_Node_Str");
  t(Expression.and(Expression.boolean_(true),Expression.boolean_(false)),"String_Node_Str");
  t(Expression.lt(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.gt(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.le(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.ge(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.add(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.sub(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.mul(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.div(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.mod(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.paren(Expression.null_()),"String_Node_Str");
  t(Expression.paren(Expression.null_()),"String_Node_Str");
  t(Expression.paren(Expression.paren(Expression.null_())),"String_Node_Str");
  t(Expression.add(Expression.paren(Expression.integral(1)),Expression.paren(Expression.integral(2))),"String_Node_Str");
  t(Expression.not(Expression.null_()),"String_Node_Str");
  t(Expression.negate(Expression.simpleProperty("String_Node_Str")),"String_Node_Str");
  t(Expression.negate(Expression.simpleProperty("String_Node_Str")),"String_Node_Str");
  t(Expression.cast(EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.cast(EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.cast(Expression.null_(),EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.cast(Expression.null_(),EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.isof(EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.endsWith(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.startsWith(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substringOf(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substringOf(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.indexOf(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.replace(Expression.string("String_Node_Str"),Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.toLower(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.toUpper(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.trim(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substring(Expression.string("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.substring(Expression.string("String_Node_Str"),Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.concat(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.length(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substringOf(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.year(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.month(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.day(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.hour(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.minute(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.second(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.round(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.ceiling(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.floor(Expression.string("String_Node_Str")),"String_Node_Str");
  o("String_Node_Str",Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.DESCENDING));
  o("String_Node_Str",Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.ASCENDING));
  o("String_Node_Str",Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.DESCENDING),Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.ASCENDING));
}

Fixed version (ground truth):
@Test public void testExpressionParsing(){
  ExpressionParser.DUMP_EXPRESSION_INFO=true;
  t(Expression.null_(),"String_Node_Str");
  t(Expression.boolean_(true),"String_Node_Str");
  t(Expression.boolean_(false),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.string("String_Node_Str"),"String_Node_Str");
  t(Expression.integral(0),"String_Node_Str");
  t(Expression.integral(2),"String_Node_Str");
  t(Expression.integral(-2),"String_Node_Str");
  t(Expression.integral(222222222),"String_Node_Str");
  t(Expression.integral(-222222222),"String_Node_Str");
  t(Expression.int64(-2),"String_Node_Str");
  t(Expression.single(-2f),"String_Node_Str");
  t(Expression.single(-2.34f),"String_Node_Str");
  t(Expression.double_(-2.34d),"String_Node_Str");
  t(Expression.double_(-2E+1),"String_Node_Str");
  t(Expression.double_(2E-1),"String_Node_Str");
  t(Expression.double_(-2.1E+1),"String_Node_Str");
  t(Expression.double_(-2.1E-1),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.dateTime(new LocalDateTime("String_Node_Str")),"String_Node_Str");
  t(Expression.dateTimeOffset(new DateTime("String_Node_Str")),"String_Node_Str");
  t(Expression.time(new LocalTime("String_Node_Str")),"String_Node_Str");
  t(Expression.guid(Guid.fromString("String_Node_Str")),"String_Node_Str");
  t(Expression.guid(Guid.fromString("String_Node_Str")),"String_Node_Str");
  t(Expression.decimal(new BigDecimal("String_Node_Str")),"String_Node_Str");
  t(Expression.binary(new byte[]{(byte)0xff}),"String_Node_Str");
  t(Expression.binary(new byte[]{(byte)0x00,(byte)0xaa,(byte)0xff}),"String_Node_Str");
  t(Expression.simpleProperty("String_Node_Str"),"String_Node_Str");
  t(Expression.simpleProperty("String_Node_Str"),"String_Node_Str");
  t(Expression.eq(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.eq(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.eq(Expression.string("String_Node_Str"),Expression.simpleProperty("String_Node_Str")),"String_Node_Str");
  t(Expression.ne(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  EqExpression exp=Expression.eq(Expression.simpleProperty("String_Node_Str"),Expression.integral(1));
  t(Expression.and(exp,exp),"String_Node_Str");
  t(Expression.or(exp,exp),"String_Node_Str");
  t(Expression.or(exp,Expression.and(exp,exp)),"String_Node_Str");
  t(Expression.or(Expression.and(exp,exp),exp),"String_Node_Str");
  t(Expression.and(Expression.boolean_(true),Expression.boolean_(false)),"String_Node_Str");
  t(Expression.lt(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.gt(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.le(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.ge(Expression.simpleProperty("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.add(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.sub(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.mul(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.div(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.mod(Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.paren(Expression.null_()),"String_Node_Str");
  t(Expression.paren(Expression.null_()),"String_Node_Str");
  t(Expression.paren(Expression.paren(Expression.null_())),"String_Node_Str");
  t(Expression.add(Expression.paren(Expression.integral(1)),Expression.paren(Expression.integral(2))),"String_Node_Str");
  t(Expression.not(Expression.null_()),"String_Node_Str");
  t(Expression.negate(Expression.simpleProperty("String_Node_Str")),"String_Node_Str");
  t(Expression.negate(Expression.simpleProperty("String_Node_Str")),"String_Node_Str");
  t(Expression.cast(EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.cast(EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.cast(Expression.null_(),EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.cast(Expression.null_(),EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.isof(EdmSimpleType.STRING.getFullyQualifiedTypeName()),"String_Node_Str");
  t(Expression.endsWith(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.startsWith(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substringOf(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substringOf(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.indexOf(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.replace(Expression.string("String_Node_Str"),Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.toLower(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.toUpper(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.trim(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substring(Expression.string("String_Node_Str"),Expression.integral(1)),"String_Node_Str");
  t(Expression.substring(Expression.string("String_Node_Str"),Expression.integral(1),Expression.integral(2)),"String_Node_Str");
  t(Expression.concat(Expression.string("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.length(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.substringOf(Expression.simpleProperty("String_Node_Str"),Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.year(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.month(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.day(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.hour(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.minute(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.second(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.round(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.ceiling(Expression.string("String_Node_Str")),"String_Node_Str");
  t(Expression.floor(Expression.string("String_Node_Str")),"String_Node_Str");
  o("String_Node_Str",Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.DESCENDING));
  o("String_Node_Str",Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.ASCENDING));
  o("String_Node_Str",Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.DESCENDING),Expression.orderBy(Expression.simpleProperty("String_Node_Str"),Direction.ASCENDING));
}