code: private void handleMultiChannelEndpointReportResponse(
  			SerialMessage serialMessage, int offset) {
  		logger.debug("Process Multi-channel endpoint Report");
  		
  		boolean changingNumberOfEndpoints = (serialMessage.getMessagePayloadByte(offset) & 0x80) != 0;
  		endpointsAreTheSameDeviceClass = (serialMessage.getMessagePayloadByte(offset) & 0x40) != 0;
  		int endpoints = serialMessage.getMessagePayloadByte(offset + 1) & 0x7F;
  		
  		logger.debug("Changing number of endpoints = {}", changingNumberOfEndpoints ? "true" : false);
  		logger.debug("Endpoints are the same device class = {}", endpointsAreTheSameDeviceClass ? "true" : false);
  		logger.debug("Number of endpoints = {}", endpoints);
  
  		// TODO: handle dynamically added endpoints. Have never seen such a device.
  		if (changingNumberOfEndpoints)
  			logger.warn("Changing number of endpoints, expect some weird behavior during multi channel handling.");
  		
  		for (int i=1; i <= endpoints; i++) {
  			ZWaveEndpoint endpoint = new ZWaveEndpoint(i);
  			this.endpoints.put(i, endpoint);
  			if (!endpointsAreTheSameDeviceClass || i == 1)
  				this.getController().sendData(this.getMultiChannelCapabilityGetMessage(endpoint));
  		}
  	}
docs: Handles Multi Channel Endpoint Report message. Handles Report on
  the number of endpoints and whether they are dynamic and/or have the
  same command classes.
  @param serialMessage the serial message to process.
  @param offset the offset at which to start processing.