function testCopy_Nested() {
  var expectedTree =
      'combined_pred_and\n' +
      '-value_pred(Employee.salary gte 200)\n' +
      '-combined_pred_and\n' +
      '--join_pred(Employee.jobId eq Job.id)\n' +
      '--join_pred(Employee.departmentId eq Department.id)\n';

  var original = /** @type {!lf.pred.PredicateNode} */ (lf.op.and(
      e.salary.gte(200),
      lf.op.and(
          e.jobId.eq(j.id),
          e.departmentId.eq(d.id))));
  var copy = original.copy();
  assertTreesIdentical(expectedTree, original, copy);
  assertEquals(original.getId(), copy.getId());
}
Tests that copy() creates an identical tree where each node is a new
instance for the case of a tree with nested CombinedPredicate instances.