code: private static byte[] extractPropertyElements(final byte[] apdu, final int objIndex, final int propertyId,
  		final int elements) throws KNXRemoteException
  	{
  		final int oi = apdu[2] & 0xff;
  		final int pid = apdu[3] & 0xff;
  		if (oi != objIndex || pid != propertyId)
  			throw new KNXInvalidResponseException(
  					String.format("property response mismatch, expected OI %d PID %d (received %d|%d)", objIndex,
  							propertyId, oi, pid));
  		// check if number of elements is 0, indicates access problem
  		final int number = (apdu[4] & 0xFF) >>> 4;
  		if (number == 0)
  			throw new KNXRemoteException("property access OI " + oi + " PID " + pid + " failed/forbidden");
  		if (number != elements)
  			throw new KNXInvalidResponseException(String.format(
  					"property access OI %d PID %d expected %d elements (received %d)", oi, pid, elements, number));
  		final byte[] prop = new byte[apdu.length - 6];
  		for (int i = 0; i < prop.length; ++i)
  			prop[i] = apdu[i + 6];
  		return prop;
  	}
docs: returns property read.res element values