func (x *RunResult) Print(selectedLabel base.Label) {
	delim := strings.Repeat("-", 70) + "\n"
	fmt.Fprintf(os.Stderr, delim)
	x.block.Print(os.Stderr, "Error", x.index+1, selectedLabel, x.fileName)
	fmt.Fprintf(os.Stderr, delim)
	printCapturedOutput("stdOut", delim, x.StdOut())
	printCapturedOutput("stdErr", delim, x.StdErr())
}
Print reports the result to stderr.
package subshell
import (
	"fmt"
	"os"
	"strings"
	"github.com/monopole/mdrip/base"
	"github.com/monopole/mdrip/program"
)
type status int
const (
	yep status = iota
	nope
)
type BlockOutput struct {
	completed status
	output    string
}
func (x BlockOutput) Completed() bool {
	return x.completed == yep
}
func (x BlockOutput) Output() string {
	return x.output
}
func NewIncompleteOutput(output string) *BlockOutput {
	return &BlockOutput{nope, output}
}
func NewCompleteOutput(output string) *BlockOutput {
	return &BlockOutput{yep, output}
}
type RunResult struct {
	stdOut   *BlockOutput       
	stdErr   *BlockOutput       
	fileName base.FilePath      
	index    int                
	block    *program.BlockPgm  
	anErr    error              
}
func NewRunResult(out, err *BlockOutput) *RunResult {
	return &RunResult{
		out, err, "", -1,
		program.NewEmptyBlockPgm(),
		nil}
}
func (x *RunResult) HasProgrammerError() bool {
	return (x.stdOut == nil && x.stdErr != nil) || (x.stdOut != nil && x.stdErr == nil)
}
func (x *RunResult) Completed() bool {
	return (x.stdOut == nil || x.stdOut.Completed()) &&
		(x.stdErr == nil || x.stdErr.Completed())
}
func (x *RunResult) StdOut() string {
	if x.stdOut == nil {
		return ""
	}
	return x.stdOut.output
}
func (x *RunResult) StdErr() string {
	if x.stdErr == nil {
		return ""
	}
	return x.stdErr.output
}
func (x *RunResult) SetFileName(n base.FilePath) *RunResult {
	x.fileName = n
	return x
}
func (x *RunResult) FileName() base.FilePath {
	return x.fileName
}
func (x *RunResult) SetError(e error) *RunResult {
	x.anErr = e
	return x
}
func (x *RunResult) Error() error {
	return x.anErr
}
func (x *RunResult) SetIndex(i int) *RunResult {
	x.index = i
	return x
}
func (x *RunResult) Index() int {
	return x.index
}
func (x *RunResult) SetBlock(b *program.BlockPgm) *RunResult {
	x.block = b
	return x
}