@RequiresApi(api = Build.VERSION_CODES.O)
	private boolean internalSetPreferredPhy(@PhyMask final int txPhy, @PhyMask final int rxPhy,
											@PhyOption final int phyOptions) {
		final BluetoothGatt gatt = bluetoothGatt;
		if (gatt == null || !connected)
			return false;

		log(Log.VERBOSE, () -> "Requesting preferred PHYs...");
		log(Log.DEBUG, () ->
				"gatt.setPreferredPhy(" + ParserUtils.phyMaskToString(txPhy) + ", "
					+ ParserUtils.phyMaskToString(rxPhy) + ", coding option = "
					+ ParserUtils.phyCodedOptionToString(phyOptions) + ")");
		gatt.setPreferredPhy(txPhy, rxPhy, phyOptions);
		return true;
	}
There was a bug in Android up to 6.0 where the descriptor was written using parent
characteristic's write type, instead of always Write With Response, as the spec says.
<p>
See: <a href="https://android.googlesource.com/platform/frameworks/base/+/942aebc95924ab1e7ea1e92aaf4e7fc45f695a6c%5E%21/#F0">
https://android.googlesource.com/platform/frameworks/base/+/942aebc95924ab1e7ea1e92aaf4e7fc45f695a6c%5E%21/#F0</a>

@param descriptor the descriptor to be written
@return the result of {@link BluetoothGatt#writeDescriptor(BluetoothGattDescriptor)}
ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java