func (m *multiError) Errors() []error {
	errs := make([]error, len(*m))
	for _, err := range *m {
		errs = append(errs, err)
	}
	return errs
}
Errors returns a copy of the errors slice
package cli
import (
	"fmt"
	"io"
	"os"
	"strings"
)
var OsExiter = os.Exit
var ErrWriter io.Writer = os.Stderr
type MultiError interface {
	error
	Errors() []error
}
func newMultiError(err ...error) MultiError {
	ret := multiError(err)
	return &ret
}
type multiError []error
func (m *multiError) Error() string {
	errs := make([]string, len(*m))
	for i, err := range *m {
		errs[i] = err.Error()
	}
	return strings.Join(errs, "\n")
}