docs: public int setContentType(final int type) {
  		this.type = type;
  		// If the new type has Application, but there is no application fw, remove this type bit
  		if ((type & DfuBaseService.TYPE_APPLICATION) > 0 && applicationBytes == null)
  			this.type &= ~DfuBaseService.TYPE_APPLICATION;
  		// If the new type has SD+BL
  		if ((type & (DfuBaseService.TYPE_SOFT_DEVICE | DfuBaseService.TYPE_BOOTLOADER)) == (DfuBaseService.TYPE_SOFT_DEVICE | DfuBaseService.TYPE_BOOTLOADER)) {
  			// but there is no SD, remove the softdevice type bit
  			if (softDeviceBytes == null && softDeviceAndBootloaderBytes == null)
  				this.type &= ~DfuBaseService.TYPE_SOFT_DEVICE;
  			// or there is no BL, remove the bootloader type bit
  			if (bootloaderBytes == null && softDeviceAndBootloaderBytes == null)
  				this.type &= ~DfuBaseService.TYPE_SOFT_DEVICE;
  		} else {
  			// If at least one of SD or B: bit is cleared, but the SD+BL file is set, remove both bits.
  			if (softDeviceAndBootloaderBytes != null)
  				this.type &= ~(DfuBaseService.TYPE_SOFT_DEVICE | DfuBaseService.TYPE_BOOTLOADER);
  		}
  
  		if ((type & (DfuBaseService.TYPE_SOFT_DEVICE | DfuBaseService.TYPE_BOOTLOADER)) > 0 && softDeviceAndBootloaderBytes != null)
  			currentSource = softDeviceAndBootloaderBytes;
  		else if ((type & DfuBaseService.TYPE_SOFT_DEVICE) > 0)
  			currentSource = softDeviceBytes;
  		else if ((type & DfuBaseService.TYPE_BOOTLOADER) > 0)
  			currentSource = bootloaderBytes;
  		else if ((type & DfuBaseService.TYPE_APPLICATION) > 0)
  			currentSource = applicationBytes;
  		bytesReadFromCurrentSource = 0;
  		mark(0);
  		reset();
  		return this.type;
  	}