function testTree_ValuePredicates2_Unaffected() {
  var e = schema.getEmployee();

  var treeBefore =
      'order_by(Employee.id ASC)\n' +
      '-select(value_pred(Employee.salary gt 10))\n' +
      '--select(value_pred(Employee.salary lt 20))\n' +
      '---table_access(Employee)\n';

  var constructTree = function() {
    var queryContext = new lf.query.SelectContext(hr.db.getSchema());
    queryContext.from = [e];
    var predicate1 = e.salary.gt(10);
    var predicate2 = e.salary.lt(20);
    queryContext.where = lf.op.and(predicate1, predicate2);
    queryContext.orderBy = [{column: e.id, order: lf.Order.ASC}];

    var orderByNode = new lf.proc.OrderByNode(queryContext.orderBy);
    var selectNode1 = new lf.proc.SelectNode(predicate1);
    orderByNode.addChild(selectNode1);
    var selectNode2 = new lf.proc.SelectNode(predicate2);
    selectNode1.addChild(selectNode2);
    var tableAccess = new lf.proc.TableAccessNode(queryContext.from[0]);
    selectNode2.addChild(tableAccess);

    return {queryContext: queryContext, root: orderByNode};
  };

  lf.testing.treeutil.assertTreeTransformation(
      constructTree(), treeBefore, treeBefore, pass);
}
Testing case where two ValuePredicate select nodes exist, but they can't be
pushed further down. Ensuring that no endless recursion occurs (swapping the
select nodes with each other indefinitely).