func (w *PanicWriter) IndentWritesBy(spaces uint, writesFunc func(*PanicWriter)) {
	writesFunc(w.indented(spaces))
}
IndentWritesBy takes a number of spaces and a callback where all writes made
in the callback are indented by the given space number. If the current
writer is already indented, the number of spaces will be additive to the
current number of contextual spaces.
package io
import (
	"bytes"
	"fmt"
	"io"
)
type PanicWriter struct {
	inner io.Writer
	indentStepSize uint
	spaces         uint
}
func NewPanicWriter(writer io.Writer, indentStepSize uint) *PanicWriter {
	return &PanicWriter{inner: writer, indentStepSize: indentStepSize}
}
func (w *PanicWriter) Write(p []byte) (int, error) {
	if 0 < w.spaces {
		p = append(bytes.Repeat([]byte(" "), int(w.spaces)), p...)
	}
	return w.inner.Write(p)
}
func (w *PanicWriter) WriteBytes(p []byte) int {
	n, err := w.Write(p)
	if nil != err {
		panic(err)
	}
	return n
}
func (w *PanicWriter) WriteString(p string) int {
	return w.WriteBytes([]byte(p))
}
func (w *PanicWriter) Print(p ...interface{}) int {
	return w.WriteString(fmt.Sprint(p...))
}
func (w *PanicWriter) Printf(format string, p ...interface{}) int {
	return w.WriteString(fmt.Sprintf(format, p...))
}
func (w *PanicWriter) Println(p ...interface{}) int {
	return w.WriteString(fmt.Sprintln(p...))
}
func (w *PanicWriter) WriteNewLine() int {
	return w.WriteString("\n")
}
func (w *PanicWriter) WriteStringLine(p string) int {
	return w.WriteString(p) + w.WriteNewLine()
}
func (w *PanicWriter) WritePaddedStringLine(p string, padding uint) int {
	return w.writeLines(padding) + w.WriteStringLine(p) + w.writeLines(padding)
}
func (w *PanicWriter) IndentWrites(writesFunc func(*PanicWriter)) {
	writesFunc(w.indented(w.indentStepSize))
}