@NonNull
	ValueChangedCallback getValueChangedCallback(@Nullable final Object attribute) {
		ValueChangedCallback callback = valueChangedCallbacks.get(attribute);
		if (callback == null) {
			callback = new ValueChangedCallback(this);
			if (attribute != null) {
				synchronized (valueChangedCallbacks) {
					valueChangedCallbacks.put(attribute, callback);
				}
			}
		} else if (bluetoothDevice != null) {
			callback.notifyClosed();
		}
		// TODO If attribute is null, the notifyDone(device) will never be called.
		return callback;
	}
Sets and returns a callback that will respond to value changes.

@param attribute attribute to bind the callback with. If null, the returned
                 callback will not be null, but will not be used.
@return The callback.
ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java