function testMultipleOrPredicates_AllIndexed() {
  var treeBefore =
      'project()\n' +
      '-select(combined_pred_or)\n' +
      '--select(combined_pred_or)\n' +
      '---table_access(Employee)\n';

  var treeAfter =
      'project()\n' +
      '-select(combined_pred_or)\n' +
      '--table_access_by_row_id(Employee)\n' +
      '---multi_index_range_scan()\n' +
      '----index_range_scan(Employee.pkEmployee, (100, unbound], natural)\n' +
      '----index_range_scan(Employee.idx_salary, (200, unbound], natural)\n';

  var tree = constructTreeWithPredicates(
      [lf.op.or(e['id'].gt(100), e['salary'].gt(200)),
       lf.op.or(e['jobId'].gt(300), e['departmentId'].gt(400))]);
  lf.testing.treeutil.assertTreeTransformation(
      tree, treeBefore, treeAfter, pass);
}
Tests a tree where two separate OR predicates exist for the same table and
either of them could potentially be chosen by the optimizer. Currently
optimizer chooses the first encountered predicate that is eligible, without
comparing the cost two subsequent candidate prediacates.