package multierror
Flatten flattens the given error, merging any *Errors together into a single *Error.
If it isn't an *Error, just return the error as-is
	if ,  := .(*Error); ! {
		return 
	}
Otherwise, make the result and flatten away!
	 := new(Error)
	flatten(, )
	return 
}

func ( error,  *Error) {
	switch err := .(type) {
	case *Error:
		for ,  := range .Errors {
			(, )
		}
	default:
		.Errors = append(.Errors, )
	}