code: func printRowsForHandlerEntry(output io.Writer, handler *handlerEntry, obj runtime.Object, options PrintOptions, includeHeaders bool) error {
  	var results []reflect.Value
  
  	args := []reflect.Value{reflect.ValueOf(obj), reflect.ValueOf(options)}
  	results = handler.printFunc.Call(args)
  	if !results[1].IsNil() {
  		return results[1].Interface().(error)
  	}
  
  	if includeHeaders {
  		var headers []string
  		for _, column := range handler.columnDefinitions {
  			if column.Priority != 0 && !options.Wide {
  				continue
  			}
  			headers = append(headers, strings.ToUpper(column.Name))
  		}
  		headers = append(headers, formatLabelHeaders(options.ColumnLabels)...)
  		// LABELS is always the last column.
  		headers = append(headers, formatShowLabelsHeader(options.ShowLabels)...)
  		if options.WithNamespace {
  			headers = append(withNamespacePrefixColumns, headers...)
  		}
  		printHeader(headers, output)
  	}
  
  	if results[1].IsNil() {
  		rows := results[0].Interface().([]metav1beta1.TableRow)
  		printRows(output, rows, options)
  		return nil
  	}
  	return results[1].Interface().(error)
  }
docs: // printRowsForHandlerEntry prints the incremental table output (headers if the current type is
  // different from lastType) including all the rows in the object. It returns the current type
  // or an error, if any.