function constructTree2(tableRerevseOrder) {
  var tableA = schema.table('TableA');
  var tableC = schema.table('TableC');
  var t1 = tableRerevseOrder ? tableC : tableA;
  var t2 = tableRerevseOrder ? tableA : tableC;

  var queryContext = new lf.query.SelectContext(schema);
  queryContext.from = [t1, t2];
  queryContext.columns = [];
  var joinPredicate = tableA['id'].eq(tableC['id']);
  queryContext.where = joinPredicate;

  var tableAccessStep1 = new lf.proc.TableAccessFullStep(
      global, queryContext.from[0]);
  var tableAccessStep2 = new lf.proc.TableAccessFullStep(
      global, queryContext.from[1]);
  var joinStep = new lf.proc.JoinStep(
      global, joinPredicate, false /* isOuterJoin*/);
  var projectStep = new lf.proc.ProjectStep(queryContext.columns, null);
  projectStep.addChild(joinStep);
  joinStep.addChild(tableAccessStep1);
  joinStep.addChild(tableAccessStep2);

  return {
    queryContext: queryContext,
    root: projectStep
  };
}
@param {boolean} tableRerevseOrder
@return {lf.testing.treeutil.Tree}