code: func (d *Decoder) DecodeFixedOpaque(size int32) ([]byte, int, error) {
  	// Nothing to do if size is 0.
  	if size == 0 {
  		return nil, 0, nil
  	}
  
  	pad := (4 - (size % 4)) % 4
  	paddedSize := size + pad
  	if uint(paddedSize) > uint(math.MaxInt32) {
  		err := unmarshalError("DecodeFixedOpaque", ErrOverflow,
  			errMaxSlice, paddedSize, nil)
  		return nil, 0, err
  	}
  
  	buf := make([]byte, paddedSize)
  	n, err := io.ReadFull(d.r, buf)
  	if err != nil {
  		msg := fmt.Sprintf(errIODecode, err.Error(), paddedSize)
  		err := unmarshalError("DecodeFixedOpaque", ErrIO, msg, buf[:n],
  			err)
  		return nil, n, err
  	}
  	return buf[0:size], n, nil
  }
docs: // RFC Section 4.8 -  Quadruple-Precision Floating Point
  // 128-bit quadruple-precision floating point
  // Not Implemented
  // DecodeFixedOpaque treats the next 'size' bytes as XDR encoded opaque data and
  // returns the result as a byte slice along with the number of bytes actually
  // read.
  //
  // An UnmarshalError is returned if there are insufficient bytes remaining to
  // satisfy the passed size, including the necessary padding to make it a
  // multiple of 4.
  //
  // Reference:
  // 	RFC Section 4.9 - Fixed-Length Opaque Data
  // 	Fixed-length uninterpreted data zero-padded to a multiple of four