code: func (d *Directive) UnmarshalBinary(b []byte) error {
  	// Must be exactly 8 bytes
  	if len(b) != directiveLen {
  		return io.ErrUnexpectedEOF
  	}
  
  	// Byte 0 is reserved
  	if b[0] != 0 {
  		return ErrorBadArgumentParameter
  	}
  
  	// Copy command and MAC address into Directive
  	d.Command = DirectiveCommand(b[1])
  	mac := make(net.HardwareAddr, 6)
  	copy(mac, b[2:])
  	d.MAC = mac
  
  	return nil
  }
docs: // UnmarshalBinary unmarshals a raw byte slice into a Directive.
  //
  // If the byte slice does not contain exactly 8 bytes, io.ErrUnexpectedEOF
  // is returned.
  //
  // If byte 0 (reserved byte) is not empty, ErrorBadArgumentParameter is
  // returned.