### Question:
ASCIIHexCodec implements IByteArrayStreamDecoder { public void decode (@Nullable final byte [] aEncodedBuffer, @Nonnegative final int nOfs, @Nonnegative final int nLen, @Nonnull @WillNotClose final OutputStream aOS) { if (aEncodedBuffer == null || nLen == 0) return; try { boolean bFirstByte = true; int nFirstByte = 0; for (int i = 0; i < nLen; ++i) { final byte nEncByte = aEncodedBuffer[nOfs + i]; if (nEncByte == '>') break; if (Character.isWhitespace (nEncByte)) continue; final byte nDecByte = (byte) StringHelper.getHexValue ((char) nEncByte); if (nDecByte == CGlobal.ILLEGAL_UINT) throw new DecodeException ("Failed to convert byte '" + nEncByte + "/" + ((char) nEncByte) + "' to hex value in ASCIIHexDecode"); if (bFirstByte) nFirstByte = nDecByte; else aOS.write ((byte) (nFirstByte << 4 | nDecByte & 0xff)); bFirstByte = !bFirstByte; } if (!bFirstByte) aOS.write ((byte) (nFirstByte << 4)); } catch (final IOException ex) { throw new DecodeException ("Failed to decode ASCII Hex", ex); } } ASCIIHexCodec(); void decode(@Nullable final byte [] aEncodedBuffer,
                      @Nonnegative final int nOfs,
                      @Nonnegative final int nLen,
                      @Nonnull @WillNotClose final OutputStream aOS);  }### Answer:
@Test public void testDecode () { final String sEncoded = "616263\n" + "414243>"; assertEquals ("abcABC", new ASCIIHexCodec ().getDecodedAsString (sEncoded, StandardCharsets.US_ASCII)); }