code: private static CEMI create(final int msgCode, final IndividualAddress src,
  		final KNXAddress dst, final byte[] data, final CEMILData original, final boolean ext,
  		final boolean repeat)
  	{
  		final int mc = msgCode != 0 ? msgCode : original.getMessageCode();
  		final IndividualAddress s = src != null ? src : original.getSource();
  		final KNXAddress d = dst != null ? dst : original.getDestination();
  		final byte[] content = data != null ? data : original.getPayload();
  		if (original instanceof CEMILDataEx) {
  			final CEMILDataEx f = (CEMILDataEx) original;
  			final CEMILDataEx copy = new CEMILDataEx(mc, s, d, content, f.getPriority(), repeat,
  					f.isDomainBroadcast(), f.isAckRequested(), f.getHopCount());
  			copy.ctrl2 |= original.ctrl2 & 0x0f;
  			// copy additional info
  			copy.additionalInfo().addAll(f.additionalInfo());
  			return copy;
  		}
  		if (ext)
  			return new CEMILDataEx(mc, s, d, content, original.getPriority(), repeat, original.getHopCount());
  		return new CEMILData(mc, s, d, content, original.getPriority(), repeat, original.getHopCount());
  	}
docs: leave msgcode/src/dst/data null/0 to use from original