code: public void replaceChildOutputSchemaNames(AbstractPlanNode child) {
          NodeSchema childSchema = child.getTrueOutputSchema(false);
          NodeSchema mySchema = getOutputSchema();
          assert(childSchema.size() == mySchema.size());
          for (int idx = 0; idx < childSchema.size(); idx += 1) {
              SchemaColumn cCol = childSchema.getColumn(idx);
              SchemaColumn myCol = mySchema.getColumn(idx);
              assert(cCol.getValueType() == myCol.getValueType());
              assert(cCol.getExpression() instanceof TupleValueExpression);
              assert(myCol.getExpression() instanceof TupleValueExpression);
              cCol.reset(myCol.getTableName(),
                         myCol.getTableAlias(),
                         myCol.getColumnName(),
                         myCol.getColumnAlias());
          }
      }
docs: Replace the column names output schema of the child node with the
  output schema column names of this node.  We use this when we
  delete an unnecessary projection node.  We only need
  to make sure the column names are changed, since we
  will have checked carefully that everything else is the
  same.
  
  @param child