code: func (o Options) Marshal(b *uio.Lexer) {
  	for _, c := range o.sortedKeys() {
  		code := OptionCode(c)
  		data := o[code]
  
  		// RFC 3396: If more than 256 bytes of data are given, the
  		// option is simply listed multiple times.
  		for len(data) > 0 {
  			// 1 byte: option code
  			b.Write8(uint8(code))
  
  			// Some DHCPv4 options have fixed length and do not put
  			// length on the wire.
  			if code == End || code == Pad {
  				continue
  			}
  
  			n := len(data)
  			if n > math.MaxUint8 {
  				n = math.MaxUint8
  			}
  
  			// 1 byte: option length
  			b.Write8(uint8(n))
  
  			// N bytes: option data
  			b.WriteBytes(data[:n])
  			data = data[n:]
  		}
  	}
  
  	// If "End" option is not in map, marshal it manually.
  	if _, ok := o[End]; !ok {
  		b.Write8(uint8(End))
  	}
  }
docs: // Marshal writes options into the provided Buffer sorted by option codes.