code: public void harmonizeOutputSchema() {
          boolean changedCurrent;
          boolean changedBase;
          boolean changedRecursive = false;
          NodeSchema currentSchema = getOutputSchema();
          NodeSchema baseSchema = getBestCostBasePlan().rootPlanGraph.getTrueOutputSchema(false);
          NodeSchema recursiveSchema
              = (getBestCostRecursivePlan() == null)
                  ? null
                  : getBestCostRecursivePlan().rootPlanGraph.getTrueOutputSchema(true);
          // First, make the current schema
          // the widest.
          changedCurrent = currentSchema.harmonize(baseSchema, "Base Query");
          if (recursiveSchema != null) {
              // Widen the current schema to the recursive
              // schema if necessary as well.
              boolean changedRec = currentSchema.harmonize(recursiveSchema, "Recursive Query");
              changedCurrent = changedCurrent || changedRec;
          }
          // Then change the base and current
          // schemas.
          changedBase = baseSchema.harmonize(currentSchema, "Base Query");
          if (recursiveSchema != null) {
              changedRecursive = recursiveSchema.harmonize(currentSchema, "Recursive Query");
          }
          // If we changed something, update the output schemas
          // which depend on the one we changed.
          if (changedBase) {
              getBestCostBasePlan().rootPlanGraph.getTrueOutputSchema(true);
          }
          if (changedRecursive) {
              getBestCostRecursivePlan().rootPlanGraph.getTrueOutputSchema(true);
          }
      }
docs: We have just planned the base query and perhaps
  the recursive query.  We need to make sure that the
  output schema of the scan and the output schemas
  of the base and recursive plans are all compatible.
  
  <ol>
  <li>If they have different lengths, then it is an error,
  probably an internal error.</li>
  <li>If they have different types, then it is ok if there
  is a common type to which the two types can be converted.</li>
  <li>If they have different lengths, we need to make the length
  the larger of the two.</li>
  </ol>
  @param scan The scan to harmonize.