@RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
	private boolean createBond(@NonNull final BluetoothDevice device) {
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
			log(Log.DEBUG, () -> "device.createBond()");
			return device.createBond();
		} else {
			/*
			 * There is a createBond() method in BluetoothDevice class but for now it's hidden.
			 * We will call it using reflections. It has been revealed in KitKat (Api19).
			 */
			try {
				final Method createBond = device.getClass().getMethod("createBond");
				log(Log.DEBUG, () -> "device.createBond() (hidden)");
				return createBond.invoke(device) == Boolean.TRUE;
			} catch (final Exception e) {
				Log.w(TAG, "An exception occurred while creating bond", e);
				return false;
			}
		}
	}
Returns the value of the server descriptor. For descriptor that are not shared,
the value may be different for each connected device.

@param serverDescriptor The descriptor to get value of.
@return The value.
ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java