code: func (enc *Encoder) EncodeOpaque(v []byte) (err error) {
  	dataLen := len(v)
  	if uint(dataLen) > math.MaxUint32 {
  		err = marshalError("EncodeOpaque", ErrOverflow, errMaxXdr, dataLen)
  		return
  	}
  	err = enc.EncodeUint(uint32(dataLen))
  	if err != nil {
  		return
  	}
  	err = enc.EncodeFixedOpaque(v)
  	return
  }
docs: // EncodeOpaque treats the passed byte slice as opaque data of a variable
  // size and appends the XDR encoded representation of it to the Encoder's data.
  //
  // A MarshalError is returned if appending the data would overflow the
  // internal data slice or the data in the byte slice is larger than XDR
  // supports.
  //
  // Reference:
  // 	RFC Section 4.10 - Variable-Length Opaque Data
  // 	Unsigned integer length followed by fixed opaque data of that length