code: func IsIO(err error) bool {
  	switch e := err.(type) {
  	case *UnmarshalError:
  		return e.ErrorCode == ErrIO
  	case *MarshalError:
  		return e.ErrorCode == ErrIO
  	}
  	return false
  }
docs: // IsIO returns a boolean indicating whether the error is known to report that
  // the underlying reader or writer encountered an ErrIO.