code: func (d *DUIDLL) UnmarshalBinary(p []byte) error {
  	b := buffer.New(p)
  	// Too short to be DUIDLL
  	if b.Len() < 4 {
  		return io.ErrUnexpectedEOF
  	}
  
  	// Verify DUID type
  	dType := DUIDType(b.Read16())
  	if dType != DUIDTypeLL {
  		return errInvalidDUIDLL
  	}
  	d.Type = dType
  	d.HardwareType = b.Read16()
  	d.HardwareAddr = b.Remaining()
  
  	return nil
  }
docs: // UnmarshalBinary unmarshals a raw byte slice into a DUIDLL.
  // If the byte slice does not contain enough data to form a valid
  // DUIDLL, or another DUID type is indicated, errInvalidDUIDLL is returned.