docs: public void attachIoDevice(IoDevice ioDevice) throws IOException {
          if (!isEnabled()) {
              throw new IllegalStateException("Cursor not enabled");
          }
          IoDevice oldDevice = getIoDevice();
          if (oldDevice != null && oldDevice.equals(ioDevice)) {
              Log.d(TAG, "Current and desired Io device are same");
              return;
          }
  
          if (!isIoDeviceCompatible(ioDevice)) {
              throw new IllegalArgumentException("IO device not compatible");
          }
          IoDevice availableIoDevice = mCursorManager.getAvailableIoDevice(ioDevice);
          if (availableIoDevice == null) {
              throw new IOException("IO device cannot be attached");
          }
  
          Log.d(TAG, "Attaching ioDevice:" + availableIoDevice.getDeviceId() + " to cursor:"
                     + mCursorID);
  
          mCursorManager.removeCursorFromScene(this);
          setIoDevice(availableIoDevice);
          mCursorManager.addCursorToScene(this);
          if (oldDevice != null)
          {
              resetIoDevice(oldDevice);
          }
      }