package multierror
Append is a helper function that will append more errors onto an Error in order to create a larger multi-error. If err is not a multierror.Error, then it will be turned into one. If any of the errs are multierr.Error, they will be flattened one level into err.
func ( error,  ...error) *Error {
	switch err := .(type) {
Typed nils can reach here, so initialize if we are nil
		if  == nil {
			 = new(Error)
		}
Go through each error and flatten
		for ,  := range  {
			switch e := .(type) {
			case *Error:
				if  != nil {
					.Errors = append(.Errors, .Errors...)
				}
			default:
				if  != nil {
					.Errors = append(.Errors, )
				}
			}
		}

		return 
	default:
		 := make([]error, 0, len()+1)
		if  != nil {
			 = append(, )
		}
		 = append(, ...)

		return (&Error{}, ...)
	}